【发布时间】:2012-06-12 22:33:26
【问题描述】:
我正在使用一个带有密钥字符串的外部 API,并希望将此密钥字符串传递给测试套件。比如:
rake test [key=api_key]
代码和测试将是开源的,但我不能将我的密钥字符串分发给其他用户,所以我不能把它放在测试文件中。我可以将它作为参数传递吗?
【问题讨论】:
我正在使用一个带有密钥字符串的外部 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
如果需要,它可能需要不止一个键。
【讨论】: