Rails 6:如何创建在开发和测试中都有效但在生产中无效且不重复的凭据?

use*_*603 5 ruby-on-rails ruby-on-rails-6

我通过运行创建了一个文件来保存开发凭据

EDITOR="subl --wait" rails credentials:edit --environment development
Run Code Online (Sandbox Code Playgroud)

例如,我可以Rails.application.credentials.vonage在 dev 中访问。

然而,在测试中做同样的事情,我得到nil

> Rails.application.credentials.vonage
=> nil
Run Code Online (Sandbox Code Playgroud)

如何在不重复的情况下为开发和测试而不是生产设置共享凭据?

Sch*_*ern 4

您可以配置测试环境来查找开发文件和密钥。

# config/environments/test.rb
Rails.application.configure do |config|

  ...

  config.credentials.content_path = Rails.root.join("config/credentials/development.yml.enc")
  config.credentials.key_path = Rails.root.join("config/credentials/development.key")

  ...

end
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Rails 常规配置。