Rails.env在Rails 2中未定义

我有一个运行Ruby on Rails 2.2的旧应用程序,我无法使用gem来工作,因为它无法使用Rails.env找到当前环境:

 $ script/console >> Rails.env NoMethodError: undefined method `env' for Rails:Module from (irb):1 

gem定义为在定义Rails时使用Rails.env ,而在不定义时使用RAILS_ENV 。 但我似乎有一个没有env方法的Rails对象(即使我读过Rails 2中添加了该方法)。 知道发生了什么事吗?

Rails模块一直在使用rails。 它在3中并不新鲜,因此检查它是否被定义是错误的方法。 确定是否可以使用Rails.env的正确方法是执行Rails.respond_to? :env Rails.respond_to? :env

Rails.env是在Rails 2.3中引入的。 如果可能,您可能希望升级到Rails 2.3。

否则,请在config/initializers/rails_env.rb

 require 'active_support/string_inquirer' def Rails.env @_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development") end