アドホックなRails タスクについては、いくつかの実装方法があります。主なものは次のとおりです。
script/runner some_useful_thing
と:
rake some:other_useful_thing
どちらのオプションを選択する必要がありますか? 明確なお気に入りがある場合、いつ他のものを使用することを検討する必要がありますか? そうでない場合、非推奨の警告なしにフレームワークにまだ存在していると考えるのはなぜですか?
アドホックなRails タスクについては、いくつかの実装方法があります。主なものは次のとおりです。
script/runner some_useful_thing
と:
rake some:other_useful_thing
どちらのオプションを選択する必要がありますか? 明確なお気に入りがある場合、いつ他のものを使用することを検討する必要がありますか? そうでない場合、非推奨の警告なしにフレームワークにまだ存在していると考えるのはなぜですか?
FWIWは、レーキを支持してスクリプトランナーを使用することから離れる動きがあるようです。
更新(2009年4月25日):定期的なタスクには、スクリプト/ランナーではなく、rakeタスクを使用することをお勧めします。
また、この投稿によると、繰り返しのタスクにrakeを使用できます。
次に、これを本番データベースで毎晩深夜に実行したい場合は、次のようなcronジョブを作成できます。
0 0 * * * cd / var / www / apps / rails_app / && / usr / local / bin / rake RAILS_ENV = Production utils:send_expire_soon_emails
rake タスクにパラメーターを渡すのは、控えめに言っても、面倒なことです。環境変数に頼るか、直感的ではなく、多くの警告がある非常にハックなパラメーター システムに頼る必要があります。
タスクでコマンド ライン引数を適切に処理する必要がある場合は、スクリプトを作成することをお勧めします。
Luke Francl は、Rails を起動するスクリプト/ランナーについて言及しています。それは本当だ。ただし、レールを起動したくない場合は、スクリプト/ランナーなしでスクリプトをそのまま実行してください。したがって、スクリプトとレーキ タスクの唯一の本当の違いは、その美学です。あなたにぴったりだと思うものを選んでください。
小さなタスク (1 行または 2 行) には rake タスクを使用します。より複雑なものはすべて script/ ディレクトリに入ります。他の開発者がコードがある場所に別の場所に存在することを期待すると思う場合、私はこの規則を破ります。
コメント 2 ダウンに基づいて修正されました。彼らにカルマを与えてください!
FWIW - Rails 3.0+ では、スタンドアロン スクリプトで Rails システムを初期化する方法が変更されています。
require File.dirname(__FILE__) + '/config/environment'
上記のように、次のこともできます。
rails runner script/<script name>
または、すべてのコードを Rake タスクに入れますが、Rails 2 のレガシー コードがたくさんあります。だから私はすぐにその道をたどりたくありませんでした。
それぞれに長所と短所があります。
私が行ったことの1つは、通常のrubyスクリプトを作成し、それらをscript/maintenance
ディレクトリに配置することです。
レールをロードしてすべてのモデルなどにアクセスするために必要なことはすべてrequire '../../config/environment.rb'
ファイルの先頭に配置され、それであなたは離れます。
Rails 3.0 以降では、 にはconfig/environment.rb
が必要で、config/application.rb
には が必要config/boot.rb
です。
したがって、Rails 3 でアプリをロードするには、依然として必要なのはenvironment.rb
1 回限りのコマンドの場合は、script/runner で問題ありません。何を繰り返すにしても、長い目で見れば rake タスクの方が簡単で、何をするか忘れても要約が表示されます。