Rails.env undefined в Rails 2

У меня есть более старое приложение, работающее с Ruby on Rails 2.2, и у меня возникают проблемы с получением жемчужины для работы, потому что он не может найти текущую среду с помощью Rails.env:

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

Жемчужина настроена для использования Rails.env, когда Rails определена, и RAILS_ENV, когда это не так. Но у меня, кажется, есть объект Rails без метода env (хотя я читал, что этот метод был добавлен в Rails 2). Любая идея, что происходит?

Ответ 1

Модуль Rails всегда был в рельсах. Это не ново в 3, поэтому проверка, чтобы определить, является ли он определенным, является неправильным способом идти о вещах. Правильный способ определить, можете ли вы использовать Rails.env выполнить Rails.respond_to? :env.

Ответ 2

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