1. ホーム
  2. ruby-on-rails

[解決済み] [Railsで環境を指定してRakeタスクに引数を渡すには?[重複している]。

2022-04-08 23:31:33

質問

<余談
この質問には、すでにここで回答があります :
クローズド 4年前 .

以下のように引数を渡すことができるようになりました。

desc "Testing args"
task: :hello, :user, :message do |t, args|
  args.with_defaults(:message => "Thanks for logging on")
  puts "Hello #{args[:user]}. #{:message}"
end

Railsアプリケーションの現在の環境も読み込むことができました

desc "Testing environment"
task: :hello => :environment do 
  puts "Hello #{User.first.name}."
end

私がやりたいのは、変数と環境を持つことができることです。

desc "Testing environment and variables"
task: :hello => :environment, :message do |t, args|
  args.with_defaults(:message => "Thanks for logging on")
  puts "Hello #{User.first.name}. #{:message}"
end

しかし、それは有効なタスクコールではありません。どうすれば実現できるか、ご存知の方はいらっしゃいますか?

どのように解決するのですか?

TLDR

task :t, [args] => [deps] 

オリジナル回答

rake のタスクに引数を渡すとき、:needs オプションを使って環境を要求することができます。 例えば、以下のようになります。


desc "Testing environment and variables"
task :hello, :message, :needs => :environment do |t, args|
  args.with_defaults(:message => "Thanks for logging on")
  puts "Hello #{User.first.name}. #{args.message}"
end

以下の@Peiniauさんのコメントに従って更新しました。

Rails 3.1に関しては

task :t, arg, :needs => [deps] # deprecated

をご利用ください。

task :t, [args] => [deps]