我的应用程序连接到外部的只读数据集,该数据集可通过频繁旋转的键访问。
也就是说,每隔几个小时,您当前的密钥就会进入状态,然后您需要使用刷新密钥来获取新的访问密钥。使用刷新密钥时,您将获得一个新的刷新密钥和一个新的访问密钥。
问题出在测试中,我必须抓住这些键才能运行我的一些测试。现在我正在使用剪切和粘贴存储密钥的development.db中的当前密钥,每隔几个小时将其粘贴到application.yml中,但这当然是单调乏味的。
我想在我开始测试会话时阅读我的开发数据库以获取当前的密钥集。
怎么做? (Rails 5)
答案 0 :(得分:1)
您可以创建第二个连接配置,并在模型类中手动创建连接。
# database.yaml
test_external:
...same as development
# production_external.yml
...your production keys storage
class MyModel < ActiveRecord::Base
establish_connection "#{Rails.env}_external"
end
或者,如果您不想更改模型,可以直接访问连接:
# rails_helper.rb
ActiveRecord::Base.establish_connection('development')
@@keys = ActiveRecord.Base.connection.execute('query to retrieve the keys')
# set connection again to test to not break the tests.
ActiveRecord::Base.connection.establish_connection(Rails.env)