ruby-on-rails 如何更新Rails凭据:动态编辑之后的Rails.application.credentials的检索?

dvtswwa3  于 2023-08-08  发布在  Ruby
关注(0)|答案(2)|浏览(133)

我无法直接访问生产服务器进行部署。我只能打开Pod并在生产环境中运行Ruby on Rails控制台。要更新任何配置,我需要DevOps团队的帮助来更新环境变量并重新启动pod,以便配置生效。然而,这个过程很繁琐,我需要动态更新凭据的能力,因为在轮换凭据时很难与多个团队协调。
我需要动态更新RubyonRails凭证,而不需要重新启动应用程序服务器或Rails控制台。如何在Ruby on Rails应用程序凭据中实现这一点?

1cklez4t

1cklez4t1#

这是我发现的。简短回答:这是不可能的
要在运行rails credentials:edit后动态更新Rails.application.credentials的检索,您需要重新启动Rails应用程序以使更改生效。凭据在应用程序启动时加载到内存中,修改凭据文件不会自动更新加载的值。
下面是关于如何更新Rails.application.credentials检索的分步指南:
打开您的终端或命令提示符并导航到Rails应用程序的根目录。
运行rails credentials:edit命令在配置好的编辑器中打开credentials文件。对凭据进行必要的更改并保存文件。
保存更改后,退出编辑器。
为了确保更改生效,您需要重新启动Rails应用程序。在终端中按Ctrl+C停止当前运行的Rails服务器(如果它正在运行)。
通过运行命令rails server或rails s再次启动Rails服务器。
重新启动应用程序后,更新后的凭据将加载到内存中,您可以使用Rails.application.credentials访问它们。
需要注意的是,使用旧凭证的任何现有会话或进程都不会自动更新。您还需要重新启动这些进程,以便更新后的凭据生效。
通过执行这些步骤,您应该能够在使用rails credentials:edit动态编辑凭据文件之后更新Rails.application.credentials的检索。

t9eec4r0

t9eec4r02#

您可以使用Rails自定义凭据。
Rails 6 onwards中,您可以为每个环境创建单独的加密凭据文件。例如,对于production环境,运行:

rails credentials:edit --environment production

字符串
它将执行以下操作:

  • 如果缺少,则创建config/credentials/production.key。最好不要将它提交到版本控制中(默认情况下它会被添加到.gitignore中)。然后,您可以将此键设置为RAILS_MASTER_KEY到您的托管环境,即。在Heroku heroku config:set RAILS_MASTER_KEY=the_above_production.key
  • 如果缺少,则创建config/credentials/production.yml.enc。它是环境变量的加密版本。您可以将其安全地添加到版本控制中。
  • 解密config/credentials/production.yml.enc的内容并在默认编辑器中打开它。对于第一次运行,它将是空的,因为没有任何加密。

在新打开的窗口中添加以下内容并保存:

secret_key_base: secret
mystery: revealed


您可以检查rails c --environment=production中加载的内容

Rails.application.credentials.mystery
# revealed


每次要更新凭据时,请运行rails credentials:edit --environment production命令,进行必要的更改,并将更新后的config/credentials/production.yml.enc文件推送到版本控制中。希望它能为你节省一些时间!

相关问题