복붙노트

[RUBY-ON-RAILS] RAILS_ENV 대 Rails.env

RUBY-ON-RAILS

RAILS_ENV 대 Rails.env

하나가 실행되는 것을 ENV 검사 할 때 나는 예 모두를 참조하십시오. 무엇을 선호하는거야? 모든 의도와 목적이 동일 위해 그들이 있습니까?

해결법

  1. ==============================

    1.워드 프로세서에 따르면, # Rails.env 랩 RAILS_ENV :

    워드 프로세서에 따르면, # 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을 사용하는 더 시각적으로 매력적인 옵션이다라고 말하고 싶지만.

  2. ==============================

    2.ENV [ 'RAILS_ENV'는 이제 사용되지 않습니다.

    ENV [ 'RAILS_ENV'는 이제 사용되지 않습니다.

    당신은 분명히 훨씬 좋네요 Rails.env를 사용해야합니다.

  3. ==============================

    3.레일은 현재의 환경을 얻을 수있는 좋은 방법을 2.x으로 전에 RAILS_ENV 상수를 사용하고 있었다. 마찬가지로, 당신은 루트 폴더의 경로를 얻기 위해 현재 로거 또는 RAILS_ROOT를 얻을 수 RAILS_DEFAULT_LOGGER를 사용할 수 있습니다.

    레일은 현재의 환경을 얻을 수있는 좋은 방법을 2.x으로 전에 RAILS_ENV 상수를 사용하고 있었다. 마찬가지로, 당신은 루트 폴더의 경로를 얻기 위해 현재 로거 또는 RAILS_ROOT를 얻을 수 RAILS_DEFAULT_LOGGER를 사용할 수 있습니다.

    레일 2.X에서 시작, 레일은 레일은 특별한 방법으로 모듈 소개 :

    이것은 단지 화장품 변화가 없습니다. 레일즈는 StringInquirer 지원과 같은 표준 상수를 사용하여 사용할 수없는 이벤트 기능을 모듈. 일부 약간의 차이가있다. Rails.root은 단순한 문자열 buth 경로 인스턴스를 반환하지 않습니다.

    어쨌든, 선호하는 방법은 레일 모듈을 사용하고 있습니다. 상수 레일 3에서 더 이상 사용되지 않으며 추후 릴리스에서 제거 될 것이며, 아마도 3.1 레일.

  4. ==============================

    4.이상한 행동 내 응용 프로그램을 디버깅하는 동안 : "active_support / 알림을"요구 (RDB : 1) p ENV [ 'RAILS_ENV'] "테스트" (RDB : 1) p Rails.env "개발"

    이상한 행동 내 응용 프로그램을 디버깅하는 동안 : "active_support / 알림을"요구 (RDB : 1) p ENV [ 'RAILS_ENV'] "테스트" (RDB : 1) p Rails.env "개발"

    난 당신이 하나 또는 다른 (바람직 Rails.env)에 충실해야한다고 말할 것

  5. ==============================

    5.업데이트 : 레일 3.0.9에서 : railties / lib 디렉토리 / rails.rb에 정의 된 ENV 방법

    업데이트 : 레일 3.0.9에서 : railties / lib 디렉토리 / rails.rb에 정의 된 ENV 방법

  6. from https://stackoverflow.com/questions/2715035/rails-env-vs-rails-env by cc-by-sa and MIT license