rubyプロジェクトの開発、テスト、本番サーバーに固有のキーをどこに保存する必要がありますか?たとえば、開発固有のAmazon s3シークレットとキーをどこに保存する必要がありますか?私のconfig/development.rbファイル?私が目にする問題の1つは、ファイルがパブリックgithubプロジェクトの一部である場合、すべての人に表示されることです。ありがとう!
3 に答える
config/development.rb
、config/testing.rb
およびにそれぞれ個別の環境変数を格納しますconfig/production.rb
。
ただし、ファイルがパブリックgitリポジトリに保存される場合は、機密情報をファイルにハードコーディングする必要はありません。最良の方法は、の一部であるyamlファイルを使用するか.gitignore
、シェルで環境変数を使用することです。私はこのように後者を好みます:
PAPERCLIP_OPTIONS = { storage: :s3,
bucket: ENV['S3_BUCKET'],
s3_credentials: { access_key_id: ENV['S3_KEY'],
secret_access_key: ENV['S3_SECRET'] }}
次に、アプリを実行しているシステムに環境変数を設定するだけです。
yaml config fileメソッドを使用する場合は、機密性の高いconfigファイルをファイルに追加する必要.gitignore
があります。それ以外の場合は、引き続きパブリックリポジトリにアップロードされます。
configディレクトリを見ると、データベースの資格情報を含むYAMLファイルが表示されます。クラウド環境でも同じことができます。
development:
server: xiy-234
username: hello
password: 1325abc
production:
...
これらの情報は、configディレクトリの.ymlファイル内に置くことができます。
例えば:
production:
access_key_id: xxx
secret_access_key: xx
bucket: xxx
development:
access_key_id: xxx
secret_access_key: xxx
bucket: xxx
staging:
access_key_id: xxx
secret_access_key: xxx
bucket: xxx
これが完了したら、次の手順を実行して、これらのキーをハッシュに保存する必要があります。
APIS_CONFIG = {'amazons3' => YAML.load_file("#{RAILS_ROOT}/config/amazons3.yml")[Rails.env]}
.rb
(前のコード行をディレクトリにあるファイル内に置くことができますconfig/initializers
)
このRailscastがおもしろいと思うかもしれないことに注意してください。