Rails SECRET_KEY_BASE 在本地生产环境中返回为nil

3
我有一个Rails应用程序,我希望在云端和本地同时运行它,以便可以离线工作。为此,我正在将本地数据库与云端数据库同步,以使两者完全相同。接下来,我将在本地计算机和云端安装应用程序。
到目前为止,我已经在我的开发计算机上进行了开发,在Heroku上进行了生产,并且一切正常。
在生产计算机上,我安装了rubystack并在其上运行应用程序,在开发模式下一切正常。但是,如果我切换到生产模式,它会找不到密钥。虽然我在my secrets文件中拥有密钥:
production
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

无论如何,它在Heroku的生产环境中都能正常工作。

步骤概述:

  • 在我的Ubuntu操作系统电脑上创建了我的应用程序。

  • 在Heroku上设置并且它运行良好。

  • 在Windows操作系统的生产计算机上安装RubyStack,复制应用程序和数据库,然后运行迁移。

如果在生产计算机上通过控制台检查production SECRET_KEY_BASE,则返回nil。

但是在Heroku上可以正常工作。

我错过了什么?这可能是由于我的Ubuntu计算机和Ruby Stack上的不同Ruby配置引起的吗?

1个回答

0

前往https://dashboard.heroku.com/apps/YOUR_APP_NAME/settings,点击Reveal Config Vars并复制SECRET_KEY_BASE后面的值。

然后使用SECRET_KEY_BASE=COPIED_VALUE rails s -e production启动本地服务器。

或者您可以将export SECRET_KEY_BASE=COPIED_VALUE放置在您的.bashrc文件中(取决于您使用的shell)。


如果我按照你建议的方式启动服务器,会出现以下错误:'SECRET_KEY_BASE'不被识别为内部或外部命令。我找不到.bashrc文件,因此我在主目录上创建了它,并添加了你的代码,但这并没有解决问题... - catmal
我正在使用 rbenv。 - catmal
好的,由于我在Windows上,所以我需要在末尾放置SECRET...。但是那也不起作用。现在我通过在secrets文件中明确设置它来使其工作。我知道这不是一个好的解决方案,但这是我能让它工作的唯一方法。 - catmal

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