私はsite5.com共有ホスティングでdelayed_job(tobiとcollective_ideaの両方を試しました)を使用しており、乗客をレール環境として使用しています。私はなんとか仕事を成し遂げることができた。ただし、プラグインは最初の実行後にジョブクラスのソースコードの変更を無視しているようです。変更のたびにサーバーを再起動しましたが(touch tmp/restart.txt
)、それでも無視されます。
例:
ファイル:lib/xx_job.rb
class XxJob
def perform
Rails.logger.info "XX START"
TempTest.delete_all
i = 0
10.times {
i+=1
TempTest.create(:name => "XXX")
sleep(1)
}
Rails.logger.info "XX END"
end
end
単純なコントローラーでは、次のように呼び出します。
Delayed::Job.enqueue(XxJob.new)
私が集めた結論:
- xx_job.rbをxx_job1.rbに変更した場合-コントローラーのエラー
- クラスXxJobをクラスXxJob1に変更した場合-コントローラーのエラー
- すべてのperformメソッドのコンテンツを削除すると、古いコードの古いコードが実行されます
- クラスを含む新しい.rbファイルを実行し、このクラスをエンキューします-完全に機能します
- その新しいファイルの実行および実行ジョブで何かを変更すると、古いコードが実行されます
すべての変更の間に、サーバーを再起動しました。Passengerまたは他の何かがクラスキャッシュを保存しているようです。
このキャッシュを削除するにはどうすればよいですか?サーバーのどこかに保存されていますか?(共有ホスティングからアクセスできるといいのですが)
ありがとう!