gpt4 book ai didi

ruby-on-rails - 如何解决 "Missing ` 环境的错误 'production' secret_key_base`(Rails 4.1)

转载 作者:数据小太阳 更新时间:2023-10-29 06:16:53 25 4
gpt4 key购买 nike

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

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

最佳答案

我遇到了同样的问题,通过创建一个每次登录生产服务器时加载的环境变量解决了这个问题,并创建了一个mini-guide。配置它的步骤:

我在使用 Rails 4.1 和 Unicorn v4.8.2 时,当我尝试部署我的应用程序时,它没有正常启动,在 unicorn.log 文件中我发现了这条错误消息:

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

经过一些研究,我发现 Rails 4.1 改变了管理 secret_key 的方式,所以如果你阅读位于 exampleRailsProject/的 secrets.yml 文件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 应用程序。

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

就是这样!我希望这个mini-guide帮助您解决此错误。

免责声明:我不是 Linux 或 Rails 大师,所以如果您发现问题或任何错误,我很乐意修复它。

关于ruby-on-rails - 如何解决 "Missing ` 环境的错误 'production' secret_key_base`(Rails 4.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23180650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com