如何在 Rails 5.2 中管理不同环境的凭据?

Den*_*nis 2 credentials environment-variables amazon-s3 ruby-on-rails-5.2

我(仍然/始终)是 Rails 新手。当我构建项目时,Rails 已升级到 v5.2,并带有加密凭证。现在我即将部署到生产中,发现我不明白如何将生产凭据与开发分开。我不确定我是否知道如何在 v5.1 中做到这一点。那么在 Rails 5.2 中如何实现呢?

pat*_*MtA 6

我使用这段代码解决了我的问题

如果在您的凭据文件中像这样

development: 
    stripe_secret_key: 123
production:
    stripe_secret_key: 345
test:
    stripe_secret_key: 678
Run Code Online (Sandbox Code Playgroud)

第一个解决方案:

Rails.application.credentials[Rails.env.to_sym][:stripe_secret_key]

第二个解决方案:

打开application.rb文件并定义self.credentials方法

module ModuleName
    class Application < Rails::Application
        def self.credentials
            @credentials ||= Rails.application.credentials[Rails.env.to_sym]
        end
    end 
end
Run Code Online (Sandbox Code Playgroud)

并使用

ModuleName.credentials[:stripe_secret_key]

更多信息请参考链接