2017-12-21 3 views
2

私はアプリケーション全体で使用している定数をいくつか持っています。 私は3つのタイプがありますと言うだろう:Rails 4.2定数 - 配置先:application.yml vsカスタム設定file.rb

  1. いくつかは実際に秘密鍵

  2. を考案するようないくつかの内部の「秘密のコード」です

  3. sendgridログイン/パスワードのような外部のものにパスワードですが、いくつかのものは私がグローバル定数と呼ぶものです。つまり、アプリケーション全体でたくさん使う定数があり、誰も簡単にこれを変更したくないということです。 ほとんど変わりません。いくつかの例:FacebookページのID、またはホームページ上の無限スクロール(UXにとって重要)で定義した「ページごとの」取引数、またはaws cdn上のブランド認定ロゴのURLビューファイルhtml.erbおよびアセットjavascript .jsファイル)。 1つの側面私も念頭に置いて質問していますが、それらの定数については、開発キーよりも重大ではないように思えますが、集めたい人と、認可された開発者だけが重要なデータを変更できるようにしたいと思います。

は、ここで我々が今日仕事だ:

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ファイル内の内部でグローバル定数を置くべきかわからないよ毎回?

推奨される「レールウェイ」とは何ですか?それらを置く場所を決める方法?一般的に受け入れられている「良いセンス」/「効率的で構造が整っている」実践/ルールが存在するか?

また、カスタム設定で定義されている場合よりもユーザーがページを読み込んだときに、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は私たちのレポ内でコミットされていないので、application.ymlの中身は「秘密」のままです:-) – Mathieu

+0

おかげさまで、面白い戦略に感謝します。 – Mathieu

関連する問題