2013-03-21 26 views
4

在Rails中,您可能希望您的環境在啓動時執行不同的操作,具體取決於您是否正在運行rake任務。例如,我的使用案例是在應用程序啓動時將幾百MB的緩存加載到內存中。我們顯然不希望這種情況發生在耙指令上。如果我正在運行rake命令,如何在rails中檢測?

---更新--- 以下是可靠的解決方案,並與heroku合作。

is_rake = (ENV['RACK_ENV'].blank? || ENV['RAILS_ENV'].blank? || !("#{ENV.inspect}" =~ /worker/i).blank?) 

回答

1

檢測您的環境是否在rake命令中非常容易,但花了我一段時間才弄清楚。我希望這可以幫助那裏的人!

#In environment.rb, I do the following 
is_rake = !("#{ENV.inspect}" =~ /rake/i).blank? 
puts "Is Rake? #{is_rake}" 
+0

這不是一個可靠的解決方案。很多字符串都可能隱藏在ENV中。以下是您的模式可以匹配的單詞列表:http://www.morewords.com/contains/rake/ – Mori 2013-03-21 03:09:34

1

如果您正在使用的Heroku並且使用的是工人,這裏是做此項檢查更可靠的方式。

is_rake = (ENV['RACK_ENV'].blank? || ENV['RAILS_ENV'].blank? || !("#{ENV.inspect}" =~ /worker/i).blank?) 
相關問題