私はforemanを使ってレール開発サーバーを起動しています。 .env
ファイルにすべての環境変数を入れることができてうれしいです。テスト環境に似たようなことをする方法はありますか?rspecにENV変数を設定するにはどうすればよいですか?
私はvcr
gemで使用するAPIキーを設定したいが、APIをバージョンコントロールに追加したくない。テストスクリプトを起動するときに環境変数を手動で設定する以外にも、どんな提案もありますか?
私はforemanを使ってレール開発サーバーを起動しています。 .env
ファイルにすべての環境変数を入れることができてうれしいです。テスト環境に似たようなことをする方法はありますか?rspecにENV変数を設定するにはどうすればよいですか?
私はvcr
gemで使用するAPIキーを設定したいが、APIをバージョンコントロールに追加したくない。テストスクリプトを起動するときに環境変数を手動で設定する以外にも、どんな提案もありますか?
dotenv gemを使用できます。これはforemanと同じ働きをし、.envファイルから読み込みます。 (およびテスト環境用.env.testファイル)
あなただけの環境変数を設定する必要がある場合は、コマンドラインからそれらを設定することができ、次のいずれか
SOMETHING=123 SOMETHING_ELSE="this is a test" rake spec
それともをあなたのRakefileやspec_helper.rbの最上部に次のように定義することができます。
ENV['SOMETHING']=123
ENV['SOMETHING_ELSE']="this is a test"
彼らは常に適用されない場合は、条件付きを使用することができます
if something_needs_to_happen?
ENV['SOMETHING']=123
ENV['SOMETHING_ELSE']="this is a test"
end
あなたがどのように見えるフォアマン.env
ファイル、使用したい場合:
SOMETHING=123
SOMETHING_ELSE="this is a test"
をし、次にそれを回すと、それをevalし:
ENV['SOMETHING']='123'
ENV['SOMETHING_ELSE']='this is a test'
あなたが行う可能性があります。
File.open("/path/to/.env", "r").each_line do |line|
a = line.chomp("\n").split('=',2)
a[1].gsub!(/^"|"$/, '') if ['\'','"'].include?(a[1][0])
eval "ENV['#{a[0]}']='#{a[1] || ''}'"
end
それが複数行の値のために働くと思います。
@ JesseWolgamottが指摘したように、gem 'dotenv-rails'
のように見えます。
この回答は特別に優れています。なぜなら、 'Sinatra'のような最小限のフレームワークを使用する場合、特定の' gem'に特に依存しないアプローチを提供するからです。ありがとう! – fagiani
1つのオプションは、rspecコマンドのエイリアスをもう少し具体的にすることです。ドットファイル(.bashrc
または.profile
など)に次の行を挿入します。
alias 'rspec'='RACK_ENV=test RAILS_ENV=test bundle exec rspec'
別のオプションは、特定の.envファイルで環境変数を置くことです:dotenv
宝石を使用して
# .env.test
RAILS_ENV=test
MONGODB_URI=mongodb://localhost/test
# .. etc ..
は働くか、手動で
$ export $(cat .env.test) && rspec
または、代替として、それらをもたらすことができますあなたは 'RAILS_ENV =テスト担当者がバンドルを走らせることができます。exec rspec spec' –
これはまさに私が探していたものです。ありがとうございました –