我只是不能接受这个信息:
Missing `secret_key_base` for 'production' environment, set this string with `rails credentials:edit` (ArgumentError)
Rails 52.0,并运行
EDITOR=vim rails credentials:edit
里面:
production:
secret_key_base: xxxxxxxxxxxxxxxxxxxxxxx
保存并在终端中:
RAILS_ENV=production rails c
我错过什么了吗?我已经重新启动了服务器,并得到了同样的问题,但在开发模式没有问题。
8条答案
按热度按时间zlwx9yxi1#
保留默认的
secrets.yml
文件如果使用Rails 5。2.0,添加到下面的生产环境中,检查此LINK
wecizke32#
Rails 5.2.0需要一个额外的阶段用于生产环境:
没有它,Rails仍然福尔斯到遗留的
secret.yml
机制(目前)。引擎场的克里斯托弗Rigor has written a concise post on it。相关片段:
阅读凭证
如果要在生产环境中使用凭据,请将以下内容添加到
config/environments/production.rb
一本好书也能看到上下两面。
注意:正如@TomDogg发现的,Rails 5。2.1似乎又不同了,所以这个答案可能只适用于5。2.0.
lztngnrs3#
config/credentials。yml.enc:
另外,请确保您遵守所有YAML缩进规则(即:例如,仅2个空格),因为如果不这样做,则会使该文件的加载默默失败。
5f0d552i4#
凭据文件中没有
production:
development:
和test:
环境标记。更多信息在此DHH的帖子:https://github.com/rails/rails/pull/30067所以直接写
请不要将主密钥与密钥库混淆。主密钥用于打开凭据加密文件。
切换回以前的秘密系统不应该是解决方案,也不是公认的答案。
z0qdvdin5#
Secret_key_base未正确设置。这是一个没有得到足够关注的已知问题:https://github.com/rails/rails/issues/32947
使用以下命令生成密钥:
记录密钥。保存在
config/master.key
中。这是我想到的解决办法。我真的不喜欢我被迫把它通过一个环境变量。如果有人有更多的信息,提请我注意如何掌握。关键等工作,请做评论。
0md85ypi6#
我在使用Dockerfile将我的rails应用程序部署到dokku时遇到了这个问题。我的解决方案:
文件
config/secrets.yml
引用一个环境变量:我需要使用dokku命令行设置这个变量(直接在服务器上,或者在我的开发机器上使用dokku-cli gem)。使用dokku-cli,我可以像这样远程执行此操作:
或者登录服务器运行dokku命令
xqk2d5yq7#
避免将secret_key_base放在environment标签下。放在上面。
这是错误的:
试试这个:
cpjpxq1n8#
我在使用Rails 5时遇到了同样的问题。2在生产中的应用。
我已经安排好了其他事情。对我来说,问题不是
secret_key_base
没有正确设置,而是因为像下面这样将环境的名称作为常规参数传递是不推荐的如果你仔细查看你的错误日志,你会看到:
降级警告:将环境的名称作为常规参数传递已被弃用,并将在下一个Rails版本中删除。请使用-e选项。(从bin/rails调用:9)
要在不同的环境中运行rails控制台,请使用-e选项,如下所示:
注意:在
secrets.yml
文件中设置secret_key_base
是不安全的,因为这不是一种安全的密钥存储方式,请使用加密的credential.yml
文件和master key
进行解密。就这样
希望这能帮上忙