キー文字列を受け取る外部 API を使用しており、このキー文字列をテスト スイートに渡したいと考えています。何かのようなもの:
rake test [key=api_key]
コードとテストはオープン ソース化されますが、キー文字列を他のユーザーに配布することは許可されていないため、テスト ファイルに含めることはできません。パラメータとして渡すことはできますか?
2つのオプションがあります。これを環境変数として渡します。
API_KEY='key' rake test
次に、テストのENVオブジェクトを介してこれにアクセスできます。
key = ENV['API_KEY']
2番目のオプションは、このキーをファイル(key.txtなど)に入れて、そこから読み取ることです。そのファイルをコードと一緒に配布しないようにするには、そのファイルを.gitignoreファイル(またはSCMで使用されるignoreファイル)に追加します。
どうもありがとうございました!
本当はファイルに入れてgitignorしようと思っていたのですが、rakeにパラメータを渡してしまいました。たぶん、両方を組み合わせます(長いキーです)。
パラメータを追加するなど、:test タスクの Rakefile コードを変更します。
task :test, :key do |t, k| result = system("ruby -Ilib -Itest -e 'ARGV.each { |f| load(f) if File.exists?(f)}' test/unit/* '#{k[:key]}'") exit(result ? 0 : 1) end
必要に応じて、複数のキーが必要になる場合があります。