Ruby on Railsアプリケーションに構成値(キー、パスワード、または構成値のみ)を保存するのに最適な場所はどこですか?たくさん検索しましたが、正しいと思った答えが見つかりませんでした。
3 に答える
(アプリケーションの)パスワードは、Devise、Clearance、authLogicなどの認証/承認gemによって処理する必要があります。
アプリケーションへの特定のリクエストのルビーコードを介して利用できるようにしたい変数は、グローバル変数に格納できます。クラスレベルの固定値は定数に格納できます。Railsでは、コントローラーがapplication_controllerから継承するため、そこでクラスレベルの定数を定義できます。これらの変数タイプの変数の継承の正確なルールについては、Ruby言語を確認してください。
実際には、これをまったく行わないか、可能な場合は回避することがベストプラクティスであり、多くの優れたプログラマーは疫病のようにこれを回避します。これは、コードブロックがカプセル化されていないことを意味します。アクションは外部の値に依存するようになり、スコープ外で変更される可能性のある1つのものに多くのアイテムを依存させることで、結合が増加します。
パスワードが含まれる場合は、機密データをリポジトリにコミットしないように、データを外部ファイルに保存することをお勧めします。次に、イニシャライザでファイルを読み取ることにより、データをメモリにロードできます。例:
config / my_secrets.yml:
development:
password: abcdefgh
test:
password: abcdefgh
config / initializers / load_my_config.rb:
MY_CONFIG = YAML.load_file("#{Rails.root.to_s}/config/my_secrets.yml")[Rails.env]
password
これで、にアクセスすることで、どの環境でもにアクセスできますMY_CONFIG['password']
。本番パスワードは、サーバー上(および別の安全な場所)にのみ保持できます。
機密性の低いデータの場合は、データをイニシャライザーに直接配置します。
おそらく、アプリケーションを構成するためのレールガイドを読んだことがありますか?それを超えて、各gemは通常、必要に応じて、インストール後のジェネレーターで初期化子/構成ファイルを提供し、それをREADMEに文書化します。