71

アドホックなRails タスクについては、いくつかの実装方法があります。主なものは次のとおりです。

script/runner some_useful_thing

と:

rake some:other_useful_thing

どちらのオプションを選択する必要がありますか? 明確なお気に入りがある場合、いつ他のものを使用することを検討する必要がありますか? そうでない場合、非推奨の警告なしにフレームワークにまだ存在していると考えるのはなぜですか?

4

8 に答える 8

10

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

于 2009-05-10T19:01:28.410 に答える
10

rake タスクにパラメーターを渡すのは、控えめに言っても、面倒なことです。環境変数に頼るか、直感的ではなく、多くの警告がある非常にハックなパラメーター システムに頼る必要があります。

タスクでコマンド ライン引数を適切に処理する必要がある場合は、スクリプトを作成することをお勧めします。

Luke Francl は、Rails を起動するスクリプト/ランナーについて言及しています。それは本当だ。ただし、レールを起動したくない場合は、スクリプト/ランナーなしでスクリプトをそのまま実行してください。したがって、スクリプトとレーキ タスクの唯一の本当の違いは、その美学です。あなたにぴったりだと思うものを選んでください。

小さなタスク (1 行または 2 行) には rake タスクを使用します。より複雑なものはすべて script/ ディレクトリに入ります。他の開発者がコードがある場所に別の場所に存在することを期待すると思う場合、私はこの規則を破ります。

于 2012-12-15T00:58:07.220 に答える
9

コメント 2 ダウンに基づいて修正されました。彼らにカルマを与えてください!

FWIW - Rails 3.0+ では、スタンドアロン スクリプトで Rails システムを初期化する方法が変更されています。

require File.dirname(__FILE__) + '/config/environment'

上記のように、次のこともできます。

rails runner script/<script name>

または、すべてのコードを Rake タスクに入れますが、Rails 2 のレガシー コードがたくさんあります。だから私はすぐにその道をたどりたくありませんでした。

それぞれに長所と短所があります。

于 2010-12-29T22:13:22.330 に答える
5

私が行ったことの1つは、通常のrubyスクリプトを作成し、それらをscript/maintenanceディレクトリに配置することです。

レールをロードしてすべてのモデルなどにアクセスするために必要なことはすべてrequire '../../config/environment.rb'ファイルの先頭に配置され、それであなたは離れます。

于 2009-02-26T19:35:44.643 に答える
3

Rails 3.0 以降では、 にはconfig/environment.rbが必要で、config/application.rbには が必要config/boot.rbです。

したがって、Rails 3 でアプリをロードするには、依然として必要なのはenvironment.rb

于 2010-12-31T17:44:30.000 に答える
3

1 回限りのコマンドの場合は、script/runner で問題ありません。何を繰り返すにしても、長い目で見れば rake タスクの方が簡単で、何をするか忘れても要約が表示されます。

于 2009-02-26T17:36:33.743 に答える