1

Stripe API に関する開発を行っています。私の開発環境では、ストライプ テスト キーを使用しています。本番環境では、もちろん実際のトランザクションを処理できるように、実際の API キーを使用しています。

現在、本番環境にデプロイする直前にテスト API キーを変更しています。これはあまり気分が良くありません。私がうまくいくと確信している戦略は、gitignore を使用して開発ブランチを作成し (API キーをロードする初期化子を無視して)、デプロイする前にマスター ブランチとマージすることです。このようにして、API キーはそれぞれの環境で常に正しいものになります。しかし、私はこのアプローチがあまり好きではありません。これらの API キーをどこかに設定して、アプリが dev/prod で使用するものを認識できるようにする方法はありますか?

4

4 に答える 4

9

Rails 4.1 にはconfig/secrets.ymlファイルがあるので、次のように API キーを設定できます。

development:
  secret_key_base: 'xxx'
  publishable_key: xxx
  secret_key: xxx
production:
  secret_key_base: 'xxx'
  publishable_key: xxx
  secret_key: xxx

そして、stripe.rb ファイルでこれを行うことができます:

Rails.configuration.stripe = {
  :publishable_key => Rails.application.secrets.publishable_key,
  :secret_key      => Rails.application.secrets.secret_key
}

Stripe.api_key = Rails.configuration.stripe[:secret_key]
于 2014-06-26T13:23:55.987 に答える
2

私はYettingを使用することを好みます。

API キーを環境ファイルに追加することで作業は完了しますが、それらを別のファイルに追加することは、私にとって非常にクリーンで抽象化された方法のように思えます。

gemがインストールされたら。configディレクトリにyetting.ymlファイルを作成できます。

development:
  facebook_app_id: xxxxxx
staging:
  facebook_app_id: xxxxxx
production:
  facebook_app_id: xxxxxx
于 2012-08-15T04:30:17.643 に答える
1

これが私のやり方です:

config/initializers/stripe.rb 内

if(Rails.env == 'development' || Rails.env == 'staging')
  Stripe.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
  STRIPE_PUBLIC_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
elsif(Rails.env == 'production')
  Stripe.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
  STRIPE_PUBLIC_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
end
于 2012-08-15T06:10:50.240 に答える
1

この猫の皮を剥ぐ方法はたくさんあります。

手早く簡単に、 を見てくださいRails.env

サーバーが実行されている環境を返します。それに応じてキーを設定するだけです。

yaml私が本当にお勧めする方法は、ファイルまたはを使用してアプリケーション構成変数を作成することですRails.application.config

config/environments/development.rb

config.api_key = "my dev api key"

config/environments/production.rb

config.api_key = "my prod api key"

キーにアクセスするには

MyApp::Application.config.api_key

他の例については、この質問を確認してください。

于 2012-08-15T03:17:20.697 に答える