タスクのために Rails 環境全体をロードすることに関連する記事をたくさん見てきました。ただし、タスクに 2 つのモデル (および「resque」と「resque/scheduler」) しか使用していないため、これが不要であることが懸念されます。タスクのために環境の特定の部分のみをロードするにはどうすればよいですか?
また、この質問も同じようですが、古くなっていて、誰も十分に答えていないようです... 事前に、説明だけでなくコードを教えてください。
あなたはおそらくこの答えを気に入らないでしょうが...
環境の一部だけをロードしないでください。どんな回避策も醜く不快で脆いものになります。環境全体を要求するだけで、より速く、より簡単で、より標準的になります。思いついた解決策は、タスクの起動時間を 1 ~ 2 秒短縮するだけであり、それを実現するためにどれだけの時間とエネルギーを投資したかを考えると、それだけの価値はありません。
それにもかかわらず、本当にこれを行いたい場合は、ActiveRecord モデルのみをロードしている場合は、タスクの前に次のようなことを試すことができます:
require 'active_record'
require './app/models/my_model.rb'
未定義のメソッドや欠落している定数に関するエラーが大量に発生する可能性があります。それらのそれぞれを手動で修正して、問題を修正するためにファイルを 1 つずつ要求するか、私のアドバイスに従って環境を要求することができます。(ヒント: 環境が必要です。)