如何确定我的Rails是否在开发环境中而不在测试环境中?


78

我有一些仅在Rails应用程序处于开发环境(即$ rails服务器)中但不在测试环境(即$ rake测试)中时才需要运行的代码。

当我尝试

if Rails.env.development?
    dont run me during testing
end

无论我处于哪种环境下,代码都会执行。我什至尝试过:

if Rails.env.development? and not Rails.env.test?
    NO, REALLY, DONT RUN ME DURING TESTING
end

但没有爱。

我应该怎么做呢?


此代码应该起作用。您是否尝试过Rails.env在该块中输出以查看Rails认为正在使用的环境?
PinnyM

1
我认为可能是“而不是”位..与&&不同!那是我的猜测。.您找到解决方案了吗?
baash05 2014年

我从未找到解决方案。无论出于何种原因,rails都会运行其初始化程序两次(请参见下面的评论)。从那以后我就放弃了护栏。
spierepf 2014年

Answers:


146

您似乎在正确调用它。也许问题在于环境在某处的名称不同。在控制台中尝试:

> Rails.env
=> "development"
> Rails.env.development?
=> true
> Rails.env.test?
=> false

...以确认环境就是您所想的。


1
好的,我创建了一个初始化程序,仅将其放入“ Rails.env”。结果是$ rails服务器给出了“开发”,而$ rake测试给出了“开发”和“测试”。这向我表明,在$ rake测试期间,rails正在两次运行初始化程序。
spierepf

2
您也可以在特定环境中打开控制台,例如RAILS_ENV=test rails console

1
如果您尚未在应用中安装撬片,请不要担心。它也可以在简单的控制台中工作
ImranNaqvi 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.