- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
所以我正在尝试在生产环境中部署我的 Rails 应用程序。当我转到该页面时,出现 500 错误。当我转到我的错误日志时,我收到以下错误:
Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`)
我正在运行 Rails 4.1,我的 config/secrets.yml 如下所示:
development:
secret_key_base: <development key>
test:
secret_key_base: <test key>
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
我运行 rake secret 来获取 key 并将导出放入我的 bash_profile 并获取它。我运行了 rake assets:precompile 成功。但是我仍然不断收到此错误。有什么想法吗?
更新:我尝试更新提供的错误消息以提供更好的信息....但消息没有更新。然后,我尝试将 key 直接添加到 yml 文件中,而不是使用环境变量,但仍然没有成功。我在 hostmonster 上运行,所以我无法重新启动服务器.....但有些东西告诉我这就是需要做的...
更新二:一觉睡到现在,这个问题似乎已经不是问题了。它一定是某种缓存。现在我的问题是它试图使用我几天前为我的数据库更改的旧配置。如果我弄清楚如何使缓存无效,我会在此处发布并将其标记为答案。如果其他人知道该怎么做,请告诉我,我会将其标记为答案。我使用 HostMonster 作为我的主机,并按照他们在其网站上的步骤来托管我的 Rails 应用程序。
最佳答案
我遇到了同样的问题,我解决了创建一个环境变量的问题,每次我登录到生产服务器并创建a mini guide of the steps时都要加载它。自行配置:
所以我在 Unicorn v4.8.2 中使用 Rails 4.1,当我尝试部署我的应用程序时,它无法正常启动,在 unicorn.log 文件中我发现了这条错误消息:
app error: Missing
secret_key_base
for 'production' environment, set this value inconfig/secrets.yml
(RuntimeError)
经过一些研究,我发现 Rails 4.1 改变了管理 secret_key 的方式,所以如果我们阅读 secrets.yml
文件位于 exampleRailsProject/config/secrets.yml
(您需要将“exampleRailsProject”替换为您的项目名称)您会发现类似这样的内容:
# 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.1- 现在,如果我们以 root 用户身份登录到我们的服务器,我们将需要找到这个文件并打开它:
$ vi /etc/profile
然后我们转到文件的底部(VI中大写G的“SHIFT + G”)
并且我们将使用我们的 GENERATED_CODE 写入我们的环境变量(在 VI 中按“i”键写入),确保在文件末尾的新行中:
export SECRET_KEY_BASE=GENERATED_CODE
编写代码后,我们保存更改并关闭文件(我们按“ESC”键,然后输入“:x”和“ENTER”键以保存并退出 VI)
2.2 但是如果我们以普通用户身份登录,为了这个要点我们将其称为 example_user,我们将需要找到其他文件之一:
$ vi ~/.bash_profile
$ vi ~/.bash_login
$ vi ~/.profile
这些文件是按重要性排序的,这意味着如果你有第一个文件,那么你就不需要写其他的了。因此,如果您在目录“~/.bash_profile”和“~/.profile”中找到这 2 个文件,您只需在第一个文件中写入“~/.bash_profile”,因为 linux 将只读取这个和另一个将被忽略。
然后我们转到文件的底部(VI中大写G的“SHIFT + G”)
并且我们将使用我们的 GENERATED_CODE 写入我们的环境变量(在 VI 中按“i”键写入),确保在文件末尾的新行中:
export SECRET_KEY_BASE=GENERATED_CODE
编写代码后,我们保存更改并关闭文件(我们按“ESC”键,然后输入“:x”和“ENTER”键以保存并退出 VI)
3.-我们可以使用以下命令验证我们的环境变量是否已在 linux 中正确设置:
$ printenv | grep SECRET_KEY_BASE
或与:
$ echo $SECRET_KEY_BASE
当您执行此命令时,如果一切正常,它会向您显示我们之前生成的 GENERATED_CODE。最后,完成所有配置后,您可以毫无问题地使用 Unicorn 或其他工具部署 Rails 应用程序。
现在,当您关闭 shell 终端并再次登录到生产服务器时,您将设置此环境变量并准备好使用它。
就是这样!!我希望这个迷你指南能帮助您解决这个错误。
关于ruby-on-rails - rails secret_key_base 在生产中未被识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22979320/
我使用的是linux的windows子系统,安装了ubuntu,bash运行流畅。 我正在尝试使用make,似乎bash 无法识别gcc。尝试将其添加到 PATH,但没有任何改变。奇怪的是 - cmd
ImageMagick 已正确安装。 WAMP 的“PHP 扩展”菜单也显示带有勾选的 php_imagick。除了 Apache 和系统环境变量外,phpinfo() 没有显示任何 imagick
我是这么想的,因为上限是 2^n,并且考虑到它们都是有限机,n 状态 NFA 和具有 2^n 或更少状态的 DFA 的交集将是有效。 我错了吗? 最佳答案 你是对的。 2^n 是一个上限,因此生成的
我有一个大型数据集,其中包含每日值,指示一年中的特定一天是否特别热(用 1 或 0 表示)。我的目标是识别 3 个或更多特别炎热的日子的序列,并创建一个包含每个日子的长度以及开始和结束日期的新数据集。
我有一个向量列表,每个向量看起来像这样 c("Japan", "USA", "country", "Japan", "source", "country", "UK", "source", "coun
是否有任何工具或方法可以识别静态定义数组中的缓冲区溢出(即 char[1234] 而不是 malloc(1234))? 昨天我花了大部分时间来追踪崩溃和奇怪的行为,最终证明是由以下行引起的: // e
我一直在尝试通过导入制表符分隔的文件来手动创建 Snakemake 通配符,如下所示: dataset sample species frr PRJNA493818_GSE120639_SRP1628
我一直在尝试通过导入制表符分隔的文件来手动创建 Snakemake 通配符,如下所示: dataset sample species frr PRJNA493818_GSE120639_SRP1628
我想录下某人的声音,然后根据我获得的关于他/她声音的信息,如果那个人再次说话,我就能认出来!问题是我没有关于哪些统计数据(如频率)导致人声差异的信息,如果有人可以帮助我如何识别某人的声音? 在研究过程
我希望我的程序能够识别用户何时按下“enter”并继续循环播放。但是我不知道如何使程序识别“输入”。尝试了两种方法: string enter; string ent = "\n"; dice d1;
我创建了这个带有一个参数(文件名)的 Bash 小脚本,该脚本应该根据文件的扩展名做出响应: #!/bin/bash fileFormat=${1} if [[ ${fileFormat} =~ [F
我正在寻找一种在 for 循环内迭代时识别 subview 对象的方法,我基本上通过执行 cell.contentView.subviews 从 UITableView 的 contentView 获
我正在尝试在 Swift 中使用 CallKit 来识别调用者。 我正在寻找一种通过发出 URL 请求来识别调用者的方法。 例如:+1-234-45-241 给我打电话,我希望它向 mydomain.
我将(相当古老的)插件称为“thickbox”,如下所述: 创建厚盒时,它包含基于查询的内容列表。 使用 JavaScript 或 jQuery,我希望能够访问 type 的值(在上面的示例中 t
我想编写一些可以接受某种输入并将其识别为方波、三角波或某种波形的代码。我还需要一些产生所述波的方法。 我确实有使用 C/C++ 的经验,但是,我不确定我将如何模拟所有这些。最终,我想将其转换为微 Co
我创建了一个 for 循环,用于在每个部分显示 8 个项目,但我试图在循环中识别某些项目。例如,我想识别前两项,然后是第五项和第六项,但我的识别技术似乎是正确的。 for (int i = 0; i
如何识别 UIStoryboard? 该类具有创建和实例化的方法,但我没有看到带有类似name 的@property。例如 获取 Storyboard对象 + storyboardWithName:b
如何确定所运行的SQLServer2005的版本 要确定所运行的SQLServer2005的版本,请使用SQLServerManagementStudio连接到SQLServer2005,然后运行
这个问题在这里已经有了答案: How to check whether an object is a date? (26 个答案) 关闭2 年前。 我正在使用一个 npm 模块,它在错误时抛出一个空
我正在制作一个使用 ActivityRecognition API 在后台跟踪用户 Activity 的应用,如果用户在指定时间段(例如 1 小时)内停留在同一个地方,系统就会推送通知告诉用户去散步.
我是一名优秀的程序员,十分优秀!