我正在使用一个带有密钥字符串的外部 API,并希望将此密钥字符串传递给测试套件。就像是:
rake test [key=api_key]
代码和测试将是开源的,但我不能将我的密钥字符串分发给其他用户,所以我不能把它放在测试文件中。我可以将它作为参数传递吗?
你有两个选择。将其作为环境变量传递:
API_KEY='key' rake test
然后,您可以通过测试中的 ENV 对象访问它:
key = ENV['API_KEY']
第二种选择是将这个密钥放在一个文件中(例如 key.txt),然后从中读取它。为确保您不会将该文件与您的代码一起分发,请将其添加到您的 .gitignore 文件(或 SCM 使用的任何忽略文件)
非常感谢!
我实际上正在考虑将它放入一个文件并 gitignoring 它,但最终将一个参数传递给 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
如果需要,它可能需要不止一把钥匙。