1

FedEx や Canada Post などのさまざまな郵便サービスに接続するには、ログインとパスワードが必要な Active Shipping Gem/API を使用しています。現在、各サービスの両方をコントローラーの個別のメソッドにハードコーディングしました。これをより安全に行う方法の提案を歓迎します。ありがとうございました

4

1 に答える 1

0

すべてのパスワードに対して別のファイル内でこれを行うことができ、そのファイルを公開リポジトリにチェックインすることはありません。application.rbそのためには、すべてのパスワードを含むファイルを探すように変更する必要があります。

config/application.rb

...
# Moving ENV variables into one place (config/application.yml)
config = YAML.load(File.read(File.expand_path('../application.yml', __FILE__)))
config.merge! config.fetch(Rails.env, {})
config.each do |key, value|
  ENV[key] = value unless value.kind_of? Hash
end
...
module Myapp
  class Application < Rails::Application
  ...

config/application.yml (値の例)

## Rails
SECRET_TOKEN: 'asdfasfce336863e6asdfasdfasdf917ba42e6580fbbd42c01f19364a8f463ed377e46851360e3f282b0cdaf7b6332ed9e292c5e98e01acsasdf'

## Amazon
AWS_ACCESS_KEY_ID: 'ascdaewecaewewf'
AWS_SECRET_KEY: 'asdfasdcae/asdfac'
AWS_REDIRECT_URL: 'aws/success'

## Environment-specific
development:
  MAILER_HOST: "localhost:3000"
  REDISTOGO_URL: 'redis://@localhost:6379'
  S3_BUCKET_NAME: "myapp-staging"

test:
  MAILER_HOST: "test.local"
  REDISTOGO_URL: 'redis://@localhost:6379'
  S3_BUCKET_NAME: "myapp-staging"

production:
  MAILER_HOST: "myapp.com"
  S3_BUCKET_NAME: "myapp"
  S3_BUCKET_ADDRESS: "https://myapp.s3.amazonaws.com/"

次に、環境変数を介してアプリ全体でこの情報にアクセスできます。

ENV['AWS_ACCESS_KEY_ID']

通常パスワードを入力する場所。

これにより、すべてを 1 か所で簡単に変更できるようになり、機密情報を表示できる開発者を簡単に管理できるようになります。

編集

サブスクリプションをお持ちの場合は、素敵な Railscast もあります: http://railscasts.com/episodes/85-yaml-configuration-revised

于 2013-10-03T05:31:52.090 に答える