2

我正在使用一个带有密钥字符串的外部 API,并希望将此密钥字符串传递给测试套件。就像是:

rake test [key=api_key]

代码和测试将是开源的,但我不能将我的密钥字符串分发给其他用户,所以我不能把它放在测试文件中。我可以将它作为参数传递吗?

4

2 回答 2

2

你有两个选择。将其作为环境变量传递:

API_KEY='key' rake test

然后,您可以通过测试中的 ENV 对象访问它:

key = ENV['API_KEY']

第二种选择是将这个密钥放在一个文件中(例如 key.txt),然后从中读取它。为确保您不会将该文件与您的代码一起分发,请将其添加到您的 .gitignore 文件(或 SCM 使用的任何忽略文件)

于 2012-06-12T22:43:56.317 回答
0

非常感谢!

我实际上正在考虑将它放入一个文件并 gitignoring 它,但最终将一个参数传递给 rake。可能是,我将两者结合起来(这是一个长键)。

  1. 修改 :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
    
  2. 调用 rake test['blah-blah']

如果需要,它可能需要不止一把钥匙。

于 2012-06-13T02:06:07.790 回答