[英]Rake task failing to load :environment properly
我正在運行自定義rake任務......
namespace :import do
desc "Import terms of service as HTML from stdin"
task :terms => :environment do
html = STDIN.read
settings = ApplicationWideSetting.first
settings.terms_and_conditions = html
if settings.save
puts "Updated terms of service"
else
puts "There was an error updating terms of service"
end
end
end
在production
環境中運行任務時,模型ApplicationWideSetting報告為未定義。 但是,在其他環境(即development
, staging
, test
)上運行任務時,任務運行正常。
在所有環境中,在rails控制台中運行該過程都可以。
有誰知道發生了什么,我可以檢查的事情?
注意 :我運行任務
puts Rails.env
要檢查shell環境var RAILS_ENV是否正確設置/讀取。 我也嘗試過:環境依賴聲明周圍有和沒有方括號。
其他信息: Rails v3.2.14
進一步的信息 :我已經設置了一個全新的rails應用程序,該腳本在任何環境下都能正常運行。 由於有問題的安裝是一個真實的生產環境,我將不得不設置另一個部署並徹底檢查它。 更多信息,因為我找到它。
簡而言之,在生產中運行rake任務時,Rails不會急於加載模型(或其他任何東西)。
使用模型的最簡單方法是在開始rake任務時require
它,它應該按預期工作,在這種情況下:
# explicitly require model
require 'application_wide_setting'
可以通過以下方式加載整個rails應用程序:
Rails.application.eager_load!
但是,您可能會遇到一些初始化程序的問題(即設計)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.