如何解决错误“在“生产”环境中缺少“ secret_key_base””(Rails 4.1)

保罗·劳伦蒂(Paolo Laurenti):

我从头开始使用Rails 4.1创建了一个Rails应用程序,但遇到了一个我无法解决的奇怪问题。

每次尝试在Heroku上部署应用程序时,都会出现错误500:

Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`

secret.yml文件包含以下配置:

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

在Heroku上,我使用命令SECRET_KEY_BASE的结果配置了“ ”环境变量rake secret如果启动heroku config,我可以看到具有正确名称和值的变量。

为什么我仍然收到此错误?

黛咪·玛格斯(Demi Magus):

我遇到了同样的问题,并通过创建每次登录生产服务器时都要加载的环境变量来解决了该问题,并制作了配置它的步骤迷你指南

我在Unicorn v4.8.2上使用Rails 4.1,当我尝试部署我的应用程序时,它无法正常启动,并且在unicorn.log文件中我发现以下错误消息:

app error: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` (RuntimeError)

经过研究后,我发现Rails 4.1改变了管理的方式secret_key,因此,如果您阅读secrets.yml位于文件,exampleRailsProject/config/secrets.yml将会发现以下内容:

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

这意味着Rails建议您secret_key_base在生产服务器中使用环境变量为了解决此错误,您应该按照以下步骤在生产服务器中为Linux(在我的情况下为Ubuntu)创建环境变量:

  1. 在生产服务器的终端中执行:

    $ RAILS_ENV=production rake secret
    

    这将返回包含字母和数字的大字符串。复制该代码,我们将其称为GENERATED_CODE

  2. 登录到您的服务器

    • 如果您以root用户身份登录,请找到此文件并进行编辑:

      $ vi /etc/profile
      

      在vi中使用Shift+ G(大写“ G”)转到文件底部

      用编写您的环境变量GENERATED_CODE,按i插入vi。确保在文件末尾添加新行:

      $ export SECRET_KEY_BASE=GENERATED_CODE
      

      保存更改并使用Esc,然后使用:x关闭文件,然后Enter在vi中保存并退出。

    • 但是,如果您以普通用户身份登录,则example_user可以将此名称称为“ ”,您将需要找到以下其他文件之一:

      $ vi ~/.bash_profile
      $ vi ~/.bash_login
      $ vi ~/.profile
      

      这些文件按重要性排序,这意味着,如果您拥有第一个文件,则无需编辑其他文件。如果您发现您的目录中这两个文件~/.bash_profile,并~/.profile只将在第一个写的~/.bash_profile,因为Linux只会读取这一个,其他的将被忽略。

      然后,我们去了文件的使用底部Shift+ G再次与我们写的环境变量GENERATED_CODE使用i一次,并且一定要在文件的结尾添加新行:

      $ export SECRET_KEY_BASE=GENERATED_CODE
      

      已经写好的代码,保存更改并关闭使用该文件Esc再次和“ :x”,并Enter保存并退出。

  3. 您可以使用以下命令验证我们的环境变量是否在Linux中正确设置:

    $ printenv | grep SECRET_KEY_BASE
    

    或搭配:

    $ echo $SECRET_KEY_BASE
    

    执行此命令时,如果一切正常,它将显示GENERATED_CODE以前的内容。最后,在完成所有配置后,您应该能够毫无问题地使用Unicorn或其他工具部署Rails应用程序。

当您关闭外壳程序并再次登录生产服务器时,将设置此环境变量并准备使用它。

就是这样!希望本迷你指南可以帮助您解决此错误。

免责声明:我不是Linux或Rails专家,所以如果您发现任何错误或任何错误,我将很乐意解决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Rails 4中secret_key_base的用途是什么

Rails:如何解决“在“生产”环境中缺少secret_key_base”的问题

Rails中缺少生产secret_key_base

在Rails生产中缺少secret_key_base

Heroku上的“缺少'生产环境'的secret_key_base`”错误

在生产中无法识别rails secret_key_base

在Rails 5.2中单独使用secret_key_base吗?

Rails 6.0 中的 secret_key_base 最佳实践

在Rails 4.2.2中开发和测试secret_key_base

测试环境中Rails.application.secrets中缺少secret_key_base

在Ubuntu 18.04服务器(Rails 6.0)上缺少“生产”环境的“ secret_key_base”,尝试了多个主题

无法在Heroku上运行的Ruby on Rails 4.1.4应用程序中为生产环境设置secret_key_base

Rails.application.credentials.dig(:secret_key_base) 在 Heroku 生产中返回 nil

如何在AWS上生成丢失的secret_key_base

如何解决表单中 rails 4 中的 TypeError 错误?

在“开发”环境中缺少“ secret_token”和“ secret_key_base”,请在“ config / secrets.yml”中设置这些值。

在“开发”环境中缺少“ secret_token”和“ secret_key_base”,请在“ config / secrets.yml”中设置这些值

生产环境缺少secret_key_base-在Heroku上托管Rails 4.1.4应用

如何解决错误:缺少环境变量“TWITTER_CONSUMER_KEY”

部署到 Heroku 的问题:缺少“secret_key_base”和未初始化的常量帖子(NameError)

如何解决错误:(4, 1) TS2349:无法调用类型缺少调用签名的表达式。类型“typeof moment”没有兼容的调用签名

发生未处理的低级错误。“生产”环境缺少“secret_key _base”

rails:泄露secret_key_base有什么后果

Rails 5.2凭证:编辑不喜欢secret_key_base

如何解决错误:/AccountDemo.java:53:错误:缺少return语句} ^ 1错误

Secret_key_base无法正常工作?

Scikit学习LinearRegression:如何解决错误“ fit()缺少1个必需的位置参数:'y'”的错误?

如何解决arduino UNO中的退出状态1错误?

我可以在没有Ruby的情况下生成Rails SECRET_KEY_BASE吗?