2013-03-21 171 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?) 
相关问题