[英]Rails helper method that works differently in different environments
在Ruby on Rails应用程序中,我有一个控制器,我想要一些有条件运行的功能,其中条件取决于运行应用程序的环境。作为一个人为的例子,在开发模式中我喜欢它做:
if foo == 5:
...
end
在生产模式中,我想:
if foo > 6:
...
end
两个条件之间的差异比单个常数(上例中的5或6)更复杂。
在Rails中最常用的方法是什么? 我会直接在environments/
文件中编写辅助方法吗? 或者向应用程序控制器添加一个检查当前环境的方法? 或者是其他东西?
我只想在逻辑语句中添加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
这只是流量控制的另一个条件,无需复杂化。
如果你需要做很多, application.rb
的一些方法可以帮助:
def isDev
ENV['RAILS_ENV'] == "development"
end
def isProd
ENV['RAILS_ENV'] == "production"
end
我经常需要在我的应用程序中,在各个地方执行此操作。 例如,我不想在开发模式中包含分析代码。 所以我在应用程序控制器中设置了一个或两个实例变量:
before_filter :setup_variables
def setup_variables
@development = (ENV['RAILS_ENV'] == "development")
@production = (ENV['RAILS_ENV'] == "production")
end
我现在可以测试是否我在开发模式无论是在控制器和视图来的。
但另一个注意事项。 如果您正在进行大量基于案例的切换(如果是开发/生产),您可能希望将其重构为一组单独的对象,您可以根据环境进行切换。 例如,有一个DevelopmentLogic lib和一个ProductionLogic lib。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.