I have an older application running Ruby on Rails 2.2, and I'm having trouble getting a gem to work because it can't find the current environment with Rails.env
:
$ script/console
>> Rails.env
NoMethodError: undefined method `env' for Rails:Module
from (irb):1
The gem is set up to use Rails.env
when Rails
is defined, and RAILS_ENV
when it's not. But I seem to have a Rails
object without an env
method (even though I read that method was added in Rails 2). Any idea what's going on?
Rails.env
was introduced in Rails 2.3. You probably want to upgrade to Rails 2.3 if possible.
Otherwise, try this in a 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
The Rails
module has always been in rails. It is not new in 3, so checking to see if it's defined is the wrong way to go about things. The correct way to determine if you can use Rails.env
is to do Rails.respond_to? :env
Rails.respond_to? :env
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.