因此,我已经将正在开发的应用程序升级到Rails 5.2,它在Heroku上崩溃了。我认为这是因为/ config文件夹中没有master.key文件。我仍然有先前Rails版本中的secrets.yml文件。我必须怎么做才能解决此问题? 谢谢!
heroku日志中的错误:
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
答案 0 :(得分:1)
您必须生成 master.key 和 credentials.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
答案 1 :(得分:1)
几件事。从我个人的经验来看,我已经将多个Rails应用程序升级到5.2,并且无需使用此功能就可以部署到Heroku。因此,我认为不一定。
如果您可以运行heroku logs --tail --app <your app name>
并向我们显示应用失败的堆栈跟踪信息,那肯定会有所帮助。
答案 2 :(得分:0)
您将可以使用以下命令生成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