7

私はamazon s3や他のサービスまで私のアプリケーションをフックするために扱わなければならない多くの資格を持っています。環境変数をローカルで定義し、その定義を変更しないでください/ herokuにプッシュする方法はありますか?

私はheroku appをs3で起動していて、うまく動作します。私はこの例に従ったs3アクセス資格情報を定義しました:http://devcenter.heroku.com/articles/config-vars

しかし私は今私のローカル開発環境からs3にアクセスできるようにしたいと思います。明らかに、私がherokuで定義したconfig変数は、自分のlocalhostでは利用できません。どのようにこれらのキーをローカルに定義できますか?また、私は特にセキュアなソリューションを探しています(たとえば、キーをインテリアライザーなどのプレーンテキストで定義した場合、そのファイルを英雄にプッシュしたくないなど)。背景については

は、ここで私はペーパークリップはS3

has_attached_file :photo, 
:storage => :s3, 
:bucket => 'bucket_name', 
:s3_credentials => { 
    :access_key_id => ENV['S3_KEY'], 
    :secret_access_key => ENV['S3_SECRET'] 
} 

答えて

9

で実行している得るために、私のモデルに追加し、あなたがそれを共有したくない場合は、このようなものを定義するのに最適な場所は、おそらく初期化されています。

# config/initializers/s3_constants.rb 


if Rails.env.development? 
    S3_KEY = "mys3key" 
    S3_SECRET = "mys3secret" 
end 

このファイルはそれがあなたのリポジトリの残りの部分と一緒にプッシュされません.gitignoreに追加されていることを確認。

現実的に言えば、環境ごとに異なる定数は実際にその環境のファイル(ここではdevelopment.rb)にありますが、それらのファイルも実際にバージョン管理システムに追加する必要があります。あなたが間違いなくこのデータをgitから除外したければ、コミットしていない別のファイルがおそらくあなたの最善の策です。

+0

を参照してください。これは間違いなくこれを行うための最良の方法です。しかし、私はむしろenvが「生産」ではないことをテストしたいと思います。それであなたのテストでもうまくいきます。 –

+0

ファイルを無視している場合、プロダクションサーバはenv変数をどのように知っていますか? gitignoredファイルはまだサーバーに渡されますか? – kibaekr

2

他の環境変数と同様に、.bash_profileファイルに環境変数を定義するだけです。 Rails固有の環境変数としてセクションを区切るコメントを残しておいてください。

#~/.bash_profile 
# Rails constants 
S3_KEY="blady" 
S3_SECRET="bladybloo123" 

また、多分あなたは、あなたが定義された複数のS3の接続を持つことができるように、より具体的なものに名前を変更したい...

-2

Herokuのは、Herokuのコンフィグを提供します。追加すると、KEY =価値を提供。 config varsのドキュメント

関連する問題