Rails ランナーの構成やカスタマイズは非常に困難です。これは、実際には、この本体を持つスクリプトだけであるためです。
if code_or_file.nil?
$stderr.puts "Run '#{$0} -h' for help."
exit 1
elsif File.exist?(code_or_file)
$0 = code_or_file
Kernel.load code_or_file
else
eval(code_or_file, binding, __FILE__, __LINE__)
end
ご覧のとおり、eval
送信したコードを実行するだけなので、ラッパーも、拡張できるクラスも、基本的に構成できるものもありません。ランナーと同じように実行する rake タスクを作成することをお勧めしますが、今回は Rake によって制御される環境で行うため、必要なものすべてを構成できます。
desc 'Wraps a runner command with rake'
task :runner, [:command] => :environment do |t, args|
eval(args[:command])
end
次に、次を使用して呼び出します
rake 'runner["MyTask.run"]'
これは を使用する場合と非常に似た方法でタスクを実行しrails runner
ますが、rake のコンテキストで実行します (これには Bugsnag の使用が含まれます)。