답변:
워드 프로세서에 따르면 , #Rails.env랩 RAILS_ENV:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
그러나 다음을 사용하여 어떻게 래핑 되는지 구체적으로 살펴보십시오 ActiveSupport::StringInquirer.
이 클래스에서 문자열을 감싸면 평등을 테스트하는 더 좋은 방법을 제공합니다. Rails.env에 의해 반환 된 값은 이것을 호출하는 대신 StringInquirer 객체로 래핑됩니다.
Rails.env == "production"당신은 이것을 호출 할 수 있습니다 :
Rails.env.production?
따라서 그것들은 정확히 동일하지는 않지만 상당히 가깝습니다. 아직 Rails를 많이 사용하지는 않았지만 #Rails.env을 사용하여 시각적으로 더 매력적인 옵션 이라고 말할 수 StringInquirer있습니다.
Rails.env새로운 표준이라고 언급 할 가치가 RAILS_ENV있습니다.
Rails 2.x 이전에는 현재 환경을 얻는 가장 좋은 방법은 RAILS_ENV상수를 사용하는 것 입니다. 마찬가지로 RAILS_DEFAULT_LOGGER현재 로거 RAILS_ROOT를 가져 오거나 루트 폴더의 경로를 얻는 데 사용할 수 있습니다 .
Rails 2.x부터 Rails Rails는 몇 가지 특별한 방법으로 모듈을 소개했습니다 .
이것은 단지 외관상의 변화가 아닙니다. Rails 모듈은 StringInquirer지원 과 같은 표준 상수를 사용하여 사용할 수없는 기능을 제공합니다 . 약간의 차이도 있습니다. Rails.root간단한 String부스 Path인스턴스를 반환하지 않습니다 .
어쨌든, 선호되는 방법은 Rails모듈을 사용하는 것 입니다. 상수는 Rails 3에서 더 이상 사용되지 않으며 향후 릴리스, 아마도 Rails 3.1에서 제거 될 것입니다.
Rails.env문제없이 작동합니다.
업데이트 : Rails 3.0.9 : railties / lib / rails.rb에 정의 된 env 메소드