- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我使用 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)创建一个环境变量:
在您的生产服务器的终端执行:
$ RAILS_ENV=production rake secret
这将返回一个包含字母和数字的大字符串。复制它,我们将该代码称为 GENERATED_CODE
。
登录到您的服务器
如果您以 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 保存并退出.
您可以使用以下命令验证我们的环境变量是否已在 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/
我有 ubuntu 服务器、Rails 5.0 和 apache web 服务器 我也有很多网站 添加新站点时,出现错误“从应用程序收到不完整的响应” 当我检查 apache 日志时,我看到消息: A
我的 nginx error.log 中有错误 Missing 'secret_key_base' for 'production' environment。当我打开 secrets.yml 时,我看
我最近部署了一个应用程序,但由于缺少生产 secret_key_base 而出现内部服务器错误。经过数小时的测试,我设法用两种方法解决了这个问题: 方法一: 我用 rake secret 生成了一个新
我不明白为什么找不到我的 secret_key_base。当我在生产中启动我的应用程序时,我在 Web 浏览器上收到此消息:Missing 'secret_key_base' for 'product
我刚刚转而使用 Figaro gem v1.0.0 和 Rails 4.1.6。由于删除了我的 secrets.yml 文件,我现在收到错误: 处理请求时出现意外错误:缺少 secret_key_ba
所以我正在尝试在生产环境中部署我的 Rails 应用程序。当我转到该页面时,出现 500 错误。当我转到我的错误日志时,我收到以下错误: Exception RuntimeError in Rack
我在生产环境中的根文件夹中有一个 .env 文件。此文件定义 SECRET_KEY_BASE,用于 config/secrets.yml。问题是我无法在 config/secrets.yml 之前加载
我的 Phoenix 应用程序中出现以下错误: cookie store expects conn.secret_key_base to be set 它似乎来自 |> redirect(to: se
我有一个 Rails 应用程序,我想在云和本地的生产环境中运行它。这是为了使其可以离线工作。为此,我将本地数据库与云上的数据库同步。然后它们是相同的。 然后我当然会在本地计算机和云端安装该应用程序。
Rails 4 在 config/secrets.yml 中声明常量 secret_key_base 用于“验证签名 cookie 的完整性”。论文长度为 128 个字符 (0..f)。 Paperc
据我所知,secret_key_base 仅用于对 cookie 进行签名,更改 secret_key_base 会导致现有 cookie 失效。我需要在生产中更改 secret_key_base,让
我正在尝试使用 AWS EB CLI 在生产环境中启动我的 Rails 6.0.2.1、Ruby 2.6.5 应用程序,但是,我仍然遇到这个问题。为此,我尝试了 Google 搜索结果前两页中存在的所
我正在尝试使用 AWS EB CLI 在生产环境中启动我的 Rails 6.0.2.1、Ruby 2.6.5 应用程序,但是,我仍然遇到这个问题。为此,我尝试了 Google 搜索结果前两页中存在的所
我正在尝试访问我的本地主机,但我的浏览器中不断出现以下错误: You must set config.secret_key_base in your app's config 我环顾四周,有人说你必须
我看到了这个解决方案的所有答案,但对我没有用。 1 - 我的配置部署等于这个 tutorial by DigitalOcean (Capistrano 3 、Nginx 和 Puma),部署成功后,我
因此,我正在将一个运行在 Apache 和 Phusion Passenger 上的 Rails 4 应用程序部署到 DigitalOcean 上托管的 Ubuntu droplet。部署后,由于 R
我已经生成了简单的 Rails API 应用程序,但我遇到了 Rails.application.secrets.secret_key_base 的问题 - 它是 nil。我在我的本地机器上启动它。根
在Rails 4 In Action Book ,它指出在进行了一些其他设置之后:在生产模式(使用 web brick)中启动 Rails 应用程序的最终设置是在终端中输入此命令: SECRET_KE
我从头开始创建了一个 Rails 应用程序 (Rails 4.1.0),但我遇到了一个我无法解决的问题。我已经安装并配置了 Apache 乘客模块,它工作正常。每当我尝试访问虚拟主机时,我都会收到错误
在 Rails 4.x 中 secret_key_base用于对 session cookie 以及通过调用 cookies.signed 创建的任何其他签名 cookie 进行签名。 . 我想更新/
我是一名优秀的程序员,十分优秀!