如何获得 rails master.key升级到 rails 5.2 后



所以我已经将我正在开发的应用程序升级到rails 5.2,但它在Heroku上崩溃了。我认为这是因为我的/config 文件夹中没有 master.key 文件。我仍然有以前的 rails 版本的 secrets.yml 文件。我该怎么做才能解决此问题?谢谢!

英雄日志中的错误:

2019-01-28T21:07:46.922561+00:00 app[web.1]: /app/vendor/bundle/ruby/2.5.0/gems/aws-sdk-s3-1.30.1/lib/aws-sdk-s3/bucket.rb:684:in `extract_name': Cannot load `Rails.config.active_storage.service`: (ArgumentError)
2019-01-28T21:07:46.922573+00:00 app[web.1]: missing required option :name

你必须生成master.keycredentials.yml.enc。为此,只需运行以下命令:

run EDITOR=vim rails credentials:edit

(作为编辑器,您可以使用其他东西,例如原子或纳米)。

在打开编辑器中,您可以键入凭据并保存它。Rails 使用 master.key 来加密凭据。您可以在此处找到更多内容: https://medium.com/cedarcode/rails-5-2-credentials-9b3324851336

要使加密凭据在 Heroku 上工作,您可以从 master 复制密钥.key并使用它来设置RAILS_MASTER_KEY环境变量。您可以通过 Heroku 仪表板或 Heroku CLI 实现此目的,如下所示:

$ heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

有几件事。 从我自己的个人经验来看,我已经将几个 Rails 应用程序升级到 5.2,并且我已经能够在没有此功能的情况下部署到 Heroku。 所以我认为不一定。

如果您可以运行heroku logs --tail --app <your app name>并向我们展示您的应用程序失败原因的堆栈跟踪,那肯定会有所帮助。

您可以使用

以下命令生成 master.key 文件:

$ EDITOR=vim rails credentials:edit

它的示例输出如下所示:

Adding config/master.key to store the master encryption key: <YOUR_MASTER_KEY>
Save this in a password manager your team can access.
If you lose the key, no one, including you, can access anything encrypted with it.
      create  config/master.key
Ignoring config/master.key so it won't end up in Git history:
      append  .gitignore

请查看官方文件:https://github.com/rails/rails/blob/master/railties/lib/rails/commands/credentials/USAGE

最新更新