ruby脚本中的Rails.env

时间:2011-11-09 20:09:12

标签: ruby-on-rails ruby command-line

Here是关于使用Rails.env代替RAILS_ENV的讨论,因为它正在被删除。 我不太明白在delayed_job这样的独立脚本中要做什么,你专门传入RAILS_ENV

RAILS_ENV=test script/delayed_job start

1 个答案:

答案 0 :(得分:3)

最新的Configuring Rails Applications Guide说:

  

ENV["RAILS_ENV"]定义了Rails将在其下运行的Rails环境(生产,开发,测试等)。

所以设置 RAILS_ENV环境变量来选择环境很好,但你应该看Rails.env 获取当前环境。

如果你看Rails.env implementation

def env
  @_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
end

您还会注意到它会查看RACK_ENV环境变量以及RAILS_ENV。另请注意StringInquirer包装,以便您可以说Rails.env.production?而不是(ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development') == 'production'