Rails helper方法在不同环境中的工作方式不同

jrd*_*oko 3 ruby environment ruby-on-rails helpers conditional-statements

在Ruby on Rails应用程序中,我有一个控制器,我想要一些有条件运行的功能,其中条件取决于运行应用程序的环境.作为一个人为的例子,在开发模式中我喜欢它做:

if foo == 5:
    ...
end
Run Code Online (Sandbox Code Playgroud)

在生产模式中,我想:

if foo > 6:
    ...
end
Run Code Online (Sandbox Code Playgroud)

两个条件之间的差异比单个常数(上例中的5或6)更复杂.

在Rails中最常用的方法是什么?我会直接在environments/文件中编写辅助方法吗?或者向应用程序控制器添加一个检查当前环境的方法?或者是其他东西?

zsa*_*ank 8

我只想ENV['RAILS_ENV']在逻辑语句中添加一个检查.

http://guides.rubyonrails.org/configuring.html#rails-environment-settings

我会将您的代码更改为:

if foo == 5 && ENV['RAILS_ENV'] == "development" then
    ...
elsif foo > 6 && ENV['RAILS_ENV'] == "production" then
    ...
end
Run Code Online (Sandbox Code Playgroud)

这只是流量控制的另一个条件,无需复杂化.

如果你需要做很多事情,可以使用一些方法application.rb:

def isDev
    ENV['RAILS_ENV'] == "development"
end

def isProd
    ENV['RAILS_ENV'] == "production"
end
Run Code Online (Sandbox Code Playgroud)