如何确定我的Rails处于开发环境而不是测试环境?

88

我有一些代码,需要仅在Rails应用程序处于开发环境时运行(即$ rails server),而不是在测试环境中运行(即$ rake test)。

当我尝试使用

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
我从来没有找到解决办法。不管出于什么原因,Rails会运行两次它的初始化程序(请参见下面的注释)。我已经放弃了Rails。 - spierepf
1个回答

159

看起来你的调用是正确的。也许问题在于某个地方环境的名称不同。可以在控制台中尝试:

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

...确认环境是否与您想象的一致。


1
好的,我已经创建了一个初始化程序,它仅仅是“puts Rails.env”。结果是$ rails server会给出“development”,而$ rake test会同时给出“development”和“test”。这让我觉得rails在$ rake test期间运行了我的初始化程序两次。 - spierepf
2
您还可以在特定环境下打开控制台,例如 RAILS_ENV=test rails console - Mori
1
不用担心您的应用程序中没有安装Pry。它也可以在简单的控制台中运行。 - Mani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接