我有一个运行Ruby on Rails 2.2的旧应用程序,我无法使用gem来工作,因为它找不到Rails.env
的当前环境:
$ script/console
>> Rails.env
NoMethodError: undefined method `env' for Rails:Module
from (irb):1
宝石设置为在定义Rails.env
时使用Rails
,而在RAILS_ENV
未定义时使用Rails
。但我似乎有一个没有env
方法的{{1}}对象(即使我读过Rails 2中添加了该方法)。知道发生了什么事吗?
答案 0 :(得分:3)
Rails.env
。如果可能,您可能希望升级到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
答案 1 :(得分:2)
Rails
模块一直处于rails状态。它在3中并不新鲜,因此检查它是否被定义是错误的方法。确定您是否可以使用Rails.env
的正确方法是Rails.respond_to? :env
。