在“生产”环境中缺少“secret_token”和“secret_key_base”。

6
我看到了所有关于这个问题的答案,但是没有一个对我起作用。
1 - 我的配置部署与 DigitalOcean的教程 相同(Capistrano 3、Nginx 和 Puma),部署成功后,我的网页出现了错误:

发生了一个未处理的低级错误。应用程序日志可能有详细信息。

在日志中:

Rack 应用程序错误:#< RuntimeError: 缺少 'production' 环境下的 secret_tokensecret_key_base,请在 config/secrets.yml 中设置这些值>

2 - 在我的 droplet 或 VPN 中,我在文件 ./bashrc 中创建了一个带有密钥的变量(rake secret)。
export SECRET_KEY_BASE=XXXXXX

文件/config/secrets.yml是默认值

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

使用此环境变量,我检查了这个工作(echo $SECRET_KEY_BASEprintenv | grep SECRET_KEY_BASE

3-在重新启动Puma和Nginx后,如果此错误未解决,我不知道检查或调试此错误的最佳方法。

此教程是否与此解决方案不兼容?


也许我的答案不适用于Capistrano 3,我会删除我的答案,因为出于某种原因它不起作用,但也许你应该从Git仓库中删除secrets.yml并直接将其添加到主机上,然后在文件中设置密钥,避免与Capistrano和环境变量的问题。 - Demi Magus
我已经解决了在共享文件夹(远程)中创建 secret.yml 符号链接的问题,但最好的方法是使用环境变量,我想解决这个问题。 - Adriano Resende
我也遇到了这个问题@AdrianoResende - 我也很想跟随你的例子。我相信DO指南已经过时,所以直接复制可能是出现错误的原因。 - danielricecodes
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接