2017-12-21 10 views
2

내 응용 프로그램 전체에서 사용하고있는 상수가 있습니다. 나는 세 가지 유형이있다라고 말하고 싶지만 :Rails 4.2 상수 - 배치 할 위치 : application.yml vs custom config file.rb

  1. 일부는 정말 sendgrid 로그인 같은 외부 재료/암호를 암호입니다

  2. 일부는 같은 고안 내부 "비밀 코드"입니다 비밀 키

  3. 어떤 것은 내가 전역 상수 (global constant)라고 부르는 것입니다. 우리가 앱 전체에서 많이 사용하는 상수가 있고 아무도 쉽게 이것을 바꿀 수 없도록하려는 것입니다. 그들은 거의 변하지 않습니다. 몇 가지 예 : 페이 스북 페이지의 ID 또는 홈페이지의 무한 스크롤 (UX의 경우 중요)에서 정의한 "페이지 당"거래 수 또는 aws cdn의 브랜드 검증 로고의 URL (많은 파일 html.erb 및 자산 javascript .js 파일보기). 내가 질문 할 때 염두에 두어야 할 한 가지 측면은 비록 개발자 키보다 덜 중요해 보일지라도 그 상수에 대해 수집하고자하는 사람은 소수이고 권한있는 개발자 만이 중요한 데이터를 변경할 수 있다는 것이다. . 1과 2의

    • : 여기

오늘날 우리가하는 일의 난에 상수를 넣어 : 나는/application.yml
  • 그리고 3

    이 설정에 상수를 넣어 공식 Rails 가이드 (guides.rubyonrails.org/v4.2/configuring.html#custom-configuration) 에 설명 된 사용자 정의 .rb 구성 파일 예 : /config/initializers/app_custom.rb에서

    다음
  • 가 컨트롤러에이 방법으로 호출됩니다

    nb_per_page = Rails.configuration.x.infite_scrollhp_feed_per_page_deals 
    

    하지만 설정/application.yml 내부 또는 내 사용자 정의 구성 .rb 파일에서 전역 상수를 넣어하는 경우는 내가 확실하지 오전마다 ?

    권장되는 "레일 웨이"란 무엇입니까? 어떻게 그들을 배치 할 결정? 일반적으로 받아 들여지는 "좋은 센스"/ "효율적/잘 구조화 된 것으로 입증 된"관행/규칙이 있습니까?

    내 custom config에 정의 된 것보다 사용자가 페이지를로드 할 때 application.yml이보기 (.html) 및 자산 (.js) 파일에 더 빠르게 삽입되는 것도 성능면에서 다릅니다. 파일?

    답변

    1

    내가 민감한 데이터에 대한 config/secrets.yml를 사용하여 권합니다 (1, 2) :

    development: 
        some_password: ... 
    
        test: 
        some_password: ... 
    
        production: 
        some_password: <%= ENV["SOME_PASSWORD"] %> 
    

    이 방법은 (개발, 테스트 및 생산을위한) 다른 환경에서 다른 설정을 넣을 수 있습니다. 그리고 생산에 민감한 데이터를 ENV 변수로 유지하는 것이 좋습니다.

    민감하지 않은 데이터 (3)에 대해 다른 환경에 다른 설정이 필요한 경우 config/environments/*.rb 파일을 넣을 것입니다. 그런 경우가 아니며 설정이 모든 환경에서 동일하면 application.rb, application.yml 또는 initializers/*의 사용자 지정 파일 또는 클래스 상수로 지정합니다.

    +0

    그러면 비전에서 config/application.yml에 남을 것은 무엇입니까? 아무것도? – Mathieu

    +0

    btw, 디자인에 의해 config/application.yml 파일은 repo 내부에서 커미트되지 않으므로 application.yml 내부는 "secret"로 남아 있습니다 :-) – Mathieu

    +0

    답장을 보내 주셔서 감사합니다. – Mathieu