我有一個應用程序長期運行良好。我開啓了threadsafe!,現在Delayed Job不工作,說它找不到我的一個模型文件。使用線程安全時未在延遲作業中加載模型類
Job failed to load: undefined class/module Foo
這不是我在/ lib中定義的自定義作業類,這是在app /型號
這可能是導致該類模型文件無法加載?
我有一個應用程序長期運行良好。我開啓了threadsafe!,現在Delayed Job不工作,說它找不到我的一個模型文件。使用線程安全時未在延遲作業中加載模型類
Job failed to load: undefined class/module Foo
這不是我在/ lib中定義的自定義作業類,這是在app /型號
這可能是導致該類模型文件無法加載?
正如貼在你登錄的問題,萬一別人發現這個所以首先發布:
我正好碰到這個問題,以及...這裏是我的發現:Rails不急於加載類,如果應用程序通過rake任務加載(這就是DJ做它的事情)。
所以我所做的是在我production.rb
這個代碼片段:
# Enable threaded mode, unless a rake task (likely Delayed Job) is running:
config.threadsafe! unless defined?($rails_rake_task) && $rails_rake_task
Rails的設置,當它是由一個rake任務加載的全局變量。醜陋的,但似乎現在正在爲我工作...當然,如果你有多線程的rake任務,那麼這是不理想的,你應該調用Rails.application.eager_load!爲這些任務。我猜測多線程的rake任務很少見。
沒有真正相關,但我今天有延遲作業完全相同的錯誤信息,沒有啓用線程安全。
原因和解決方案更加微不足道 - 我們的服務器上有另一個使用延遲作業的ruby產品,它的工作人員沒有命名隊列,所以他們從我設置的隊列中抓取隨機作業。
即使在使用pat的方法不使用線程安全耙作業,我的工作仍然失敗。
我最後不得不使用的GitHub Wiki page發現以下手動加載技術:
# file: config/initializers/custom.rb
require 'my_custom_class'
就又有了一個類似的問題,並發現了一些new--'$ rails_rake_task'不application.rb中設置,所以上面的代碼行必須進入相應的環境配置。 –
這對我有效。所以當不在線程安全模式下運行時,它會預加載模型? –
真棒,很好找。 –