복붙노트

[RUBY-ON-RAILS] 레일에서 사용자 지정 구성 변수를 정의하는 방법

RUBY-ON-RAILS

레일에서 사용자 지정 구성 변수를 정의하는 방법

나는이 응용 프로그램을 레일 방법과 컨트롤러에 액세스하기에 나는이 구성 파일에서 upload_directory을 정의 할 수 싶어 예를 들어, 사용자 정의 구성 변수를 추가하는 방법 궁금 해서요은 development.rb 말 중 하나에 액세스 그것을 할 수있을 내 컨트롤러.

둘째 난 내가 내 레일 응용 프로그램에서 초기화 어떻게 내가 값에 액세스 어떻게 내가 정의하는 S3 액세스, 비밀 키와 YAML 파일을 추가하고 싶다면, 내 응용 프로그램에 업로드 S3 지원을 계획했다 그 설정 파일입니다.

해결법

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

    1.업데이트 1

    업데이트 1

    매우 추천 : 나는이 제공하는 세밀한 제어를 위해 요즘 레일 구성 보석으로 갈거야.

    갱신 2

    짧은 솔루션을 원한다면, 아래 잭 프랫의 답변을 확인합니다.

    내 원래의 대답은 아래 여전히 작동하지만,이 대답은 이제 구식이된다. 나는 업데이트 1과 2에서 보는 것이 좋습니다.

    원래 답변 :

    라이언 베이츠에 의해 "YAML 구성 파일"스크린 캐스트를보고 빠른 솔루션의 경우, 매우 도움이 될 것이다.

    요약해서 말하자면:

    # config/initializers/load_config.rb
    APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
    
    # application.rb
    if APP_CONFIG['perform_authentication']
      # Do stuff
    end
    
  2. ==============================

    2.레일 (3)에서, 애플리케이션 특정 맞춤 구성 데이터는 애플리케이션 구성 객체에 위치 될 수있다. 구성은 초기화 파일 또는 환경 파일에 할당 할 수 있습니다 - 말을 주어진 애플리케이션 MyApp를 위해 :

    레일 (3)에서, 애플리케이션 특정 맞춤 구성 데이터는 애플리케이션 구성 객체에 위치 될 수있다. 구성은 초기화 파일 또는 환경 파일에 할당 할 수 있습니다 - 말을 주어진 애플리케이션 MyApp를 위해 :

    MyApp::Application.config.custom_config_variable = :my_config_setting
    

    또는

    Rails.configuration.custom_config_variable = :my_config_setting
    

    설정을 읽으려면, 간단하게 설정하지 않고 구성 변수를 호출

    Rails.configuration.custom_config_variable
    => :my_config_setting
    

    UPDATE 레일 4

    레일 4 년이 이것에 대한 새로운 방법 => http://guides.rubyonrails.org/configuring.html#custom-configuration

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

    3.레일 3.0.5에서, 다음과 같은 접근 방법은 나를 위해 일한 :

    레일 3.0.5에서, 다음과 같은 접근 방법은 나를 위해 일한 :

    설정 / 환경 / development.rb, 쓰기에

    config.custom_config_key = :config_value
    

    값 custom_config_key 후 사용하여 다른 파일에서 참조 할 수 있습니다

    Rails.application.config.custom_config_key
    
  4. ==============================

    4.이 레일 3.1에서 작동 :

    이 레일 3.1에서 작동 :

    에서 설정 / environment.rb에 (또는 설정 / 환경 / .. 특정 환경 타겟팅)

    YourApp::Application.config.yourKey = 'foo'
    

    이 컨트롤러 나이 같은 전망에 액세스 할 수 있습니다 :

    YourApp::Application.config.yourKey
    

    (YourApp는 응용 프로그램 이름으로 대체해야합니다.)

    참고 : 당신이 키를 설정의 여지가 그렇다면, 루비 코드, 당신은이 작업을 수행 할 수 있습니다 :

    에서 설정 / environment.rb에 :

    YourApp::Application.configure do
      config.something = foo
      config.....
      config....
      .
      config....
    end
    
  5. ==============================

    5.당신은 YAML 파일에 사용자 정의 변수를 넣어 가정 :

    당신은 YAML 파일에 사용자 정의 변수를 넣어 가정 :

    # config/acme.yml
    development:
      :api_user: 'joe'
      :api_pass: 's4cret'
      :timeout: 20
    

    를로드 할 초기화를 만듭니다

    # config/initializers/acme.rb
    acme_config = Rails.application.config_for :acme
    
    Rails.application.configure do
      config.acme = ActiveSupport::OrderedOptions.new
      config.acme.api_user = acme_config[:api_user]
      config.acme.api_pass = acme_config[:api_pass]
      config.acme.timeout  = acme_config[:timeout]
    end
    

    이제 어디서나 앱에 당신과 같이이 값에 액세스 할 수 있습니다 :

    Rails.configuration.acme.api_user
    

    절정이 acme.yml을로드하고 올바른 환경을 사용합니다 : Rails.application.config_for가 편리합니다.

  6. ==============================

    6.레일 4.2 이후 추가 보석없이, 당신은 설정 / hi.yml 단순히 Rails.application.config_for를 사용하여로드 할 수 있습니다 : 안녕하세요.

    레일 4.2 이후 추가 보석없이, 당신은 설정 / hi.yml 단순히 Rails.application.config_for를 사용하여로드 할 수 있습니다 : 안녕하세요.

    예를 들면 :

  7. ==============================

    7.난 그냥 레일 4.2의 최신 멋진 물건이 업데이트 싶어, 당신은 지금 당신의 설정 / ** / *의 내부에서이 작업을 수행 할 수 RB 파일을. :

    난 그냥 레일 4.2의 최신 멋진 물건이 업데이트 싶어, 당신은 지금 당신의 설정 / ** / *의 내부에서이 작업을 수행 할 수 RB 파일을. :

    config.x.whatever.you.want = 42
    

    ... 그리고이 같은 앱에서 사용할 수 있습니다 :

    Rails.configuration.x.whatever.you.want
    

    자세한 내용은 여기를 참조하십시오 : http://guides.rubyonrails.org/configuring.html#custom-configuration

  8. ==============================

    8.정확히 그 일이 깔끔한 보석을 체크 아웃 : https://github.com/mislav/choices

    정확히 그 일이 깔끔한 보석을 체크 아웃 : https://github.com/mislav/choices

    중요한 데이터는 오픈 소스 프로젝트에 노출되지 않습니다이 방법

  9. ==============================

    9.나는 YAML 설정에 대한 간단한 플러그인을 만들어 : Yettings를

    나는 YAML 설정에 대한 간단한 플러그인을 만들어 : Yettings를

    그것은 khelll의 대답의 코드와 비슷한 방식으로 작동하지만, 당신은이 YAML 설정 파일을 추가해야합니다 :

    app/config/yetting.yml
    

    플러그인은 동적으로과 같이 앱에서 클래스 메소드로 YML 설정에 액세스 할 수있는 클래스를 만듭니다 :

    Yetting.your_setting
    

    당신은 고유 한 이름으로 여러 설정 파일을 사용하려는 경우 또한,이 같은 응용 프로그램 / 설정 내부의 하위 디렉토리에 배치 할 수 있습니다 :

    app/config/yettings/first.yml
    app/config/yettings/second.yml
    

    그럼 당신은 같은 값에 액세스 할 수 있습니다 :

    FirstYetting.your_setting
    SecondYetting.your_setting
    

    또한 환경에 따라 오버라이드 (override) 할 수있는 기본 설정을 제공합니다. 또한 YML 파일 내부에 ERB를 사용할 수 있습니다.

  10. ==============================

    10.정말 settingslogic 보석을 좋아한다. 설정 및 사용이 매우 편리합니다.

    정말 settingslogic 보석을 좋아한다. 설정 및 사용이 매우 편리합니다.

    https://github.com/binarylogic/settingslogic

  11. ==============================

    11.당신에게 Heroku를 사용하거나 환경 변수로 응용 프로그램 설정을 유지할 필요가있는 경우 피가로 보석은 많은 도움이 될 것입니다.

    당신에게 Heroku를 사용하거나 환경 변수로 응용 프로그램 설정을 유지할 필요가있는 경우 피가로 보석은 많은 도움이 될 것입니다.

  12. ==============================

    12.나는 필요가 웹 인터페이스를 통해 변경 될 것을 전역 구성 값 레일-설정을 사용하고 싶다.

    나는 필요가 웹 인터페이스를 통해 변경 될 것을 전역 구성 값 레일-설정을 사용하고 싶다.

  13. ==============================

    13.우리가 직장에서 일을 시작했습니다 뭔가가 ActiveSupport 정렬 된 해시입니다

    우리가 직장에서 일을 시작했습니다 뭔가가 ActiveSupport 정렬 된 해시입니다

    환경이 예를 들어, 파일 내부는 깔끔하게 구성을 정의 할 수 있습니다 어떤

    config.service = ActiveSupport::OrderedOptions.new
    config.service.api_key = ENV['SERVICE_API_KEY']
    config.service.shared_secret = ENV['SERVICE_SHARED_SECRET']
    
  14. ==============================

    14.나는 방법 모두에서 응용 프로그램에서 구성을 처리하는 좋은 방법을 제안한다. 세 가지 기본 규칙이 있습니다 :

    나는 방법 모두에서 응용 프로그램에서 구성을 처리하는 좋은 방법을 제안한다. 세 가지 기본 규칙이 있습니다 :

    더이 링크를 따라 개요를 설명했습니다하려면 적절한 방법으로 구성 레일

  15. from https://stackoverflow.com/questions/1450285/how-to-define-custom-configuration-variables-in-rails by cc-by-sa and MIT license