2

rubyプロジェクトの開発、テスト、本番サーバーに固有のキーをどこに保存する必要がありますか?たとえば、開発固有のAmazon s3シークレットとキーをどこに保存する必要がありますか?私のconfig/development.rbファイル?私が目にする問題の1つは、ファイルがパブリックgithubプロジェクトの一部である場合、すべての人に表示されることです。ありがとう!

4

3 に答える 3

4

config/development.rbconfig/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があります。それ以外の場合は、引き続きパブリックリポジトリにアップロードされます。

于 2012-04-27T20:56:39.600 に答える
1

configディレクトリを見ると、データベースの資格情報を含むYAMLファイルが表示されます。クラウド環境でも同じことができます。

development:
  server: xiy-234
  username: hello
  password: 1325abc

production:
  ...
于 2012-04-27T20:55:20.010 に答える
0

これらの情報は、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がおもしろいと思うかもしれないことに注意してください。

于 2012-04-27T20:57:19.600 に答える