1

タスクのために Rails 環境全体をロードすることに関連する記事をたくさん見てきました。ただし、タスクに 2 つのモデル (および「resque」と「resque/scheduler」) しか使用していないため、これが不要であることが懸念されます。タスクのために環境の特定の部分のみをロードするにはどうすればよいですか?

また、この質問も同じようですが、古くなっていて、誰も十分に答えていないようです... 事前に、説明だけでなくコードを教えてください。

4

1 に答える 1

2

あなたはおそらくこの答えを気に入らないでしょうが...

環境の一部だけをロードしないでください。どんな回避策も醜く不快で脆いものになります。環境全体を要求するだけで、より速く、より簡単で、より標準的になります。思いついた解決策は、タスクの起動時間を 1 ~ 2 秒短縮するだけであり、それを実現するためにどれだけの時間とエネルギーを投資したかを考えると、それだけの価値はありません。

それにもかかわらず、本当にこれを行いたい場合は、ActiveRecord モデルのみをロードしている場合は、タスクの前に次のようなことを試すことができます:

require 'active_record'
require './app/models/my_model.rb'

未定義のメソッドや欠落している定数に関するエラーが大量に発生する可能性があります。それらのそれぞれを手動で修正して、問題を修正するためにファイルを 1 つずつ要求するか、私のアドバイスに従って環境を要求することができます。(ヒント: 環境が必要です。)

于 2012-03-19T22:58:49.740 に答える