簡體   English   中英

Rake任務無法加載:環境正常

[英]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報告為未定義。 但是,在其他環境(即developmentstagingtest )上運行任務時,任務運行正常。

在所有環境中,在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM