有一个非常令人困惑的问题
我的本地应用程序正在其staging
环境中运行。我将 puma-dev 用于服务器,当我通过运行它来跟踪它时,它说环境正在开发,但是当我使用它tail -f ~/Library/Logs/puma-dev.log
注销到我的视图时,应用程序会尝试使用它需要的任何环境变量而不是变量为环境。<%= Rails.env %>
staging
staging
development
该应用程序具有用于Development
、Staging
和Test
的环境Production
。直到最近我才注意到这是在 staging 中运行的,我不确定它是如何或何时切换的,但在过去的几年里它在 dev 中运行得很好,我最近添加了一个 staging env 来帮助使用 rails升级和上周的某个时间点开始分阶段运行。
我一直认为这是由服务器在启动时设置的,但是 puma-dev 说它的环境是开发,我不知道它是如何在分阶段运行的。
puma-dev 启动时的输出
io[19626]: Puma starting in single mode...
io[19626]: * Version 4.3.5 (ruby 2.4.6-p354), codename: Mysterious Traveller
io[19626]: * Min threads: 0, max threads: 5
io[19626]: * Environment: development
任何人都可以阐明 Rails 应用程序决定设置它的环境的确切位置或方式,因为我无法在应用程序中找到它。
作为基于以下答案的测试(这很有用),我注销了这 3 个变量
<%= Rails.env %>
最终成为staging
<%= ENV["RAILS_ENV"] %>
最终什么也没显示<%= ENV["RACK_ENV"] %>
最终成为development
此外,如果我运行 rails 控制台并输入Rails.env
也返回“开发”。
我还在下面的答案中使用了建议并运行RAILS_ENV=development rails server
。这样做时,两者都ENV["RAILS_ENV"]
设置ENV["RACK_ENV"]
为开发,但应用程序仍在暂存中运行(因此上面的第一个变量没有改变,但第二个变量改变了)..
该应用程序仍在尝试使用设置的所有暂存 ENV 变量(S3 等)。对于这个应用程序,我最近也从 Rails 3.* 更新到 4.2(我知道这些版本是旧的,我继承了这些应用程序并正在开发它)。这就是添加暂存环境的原因。我无法在升级指南中找到任何关于此类问题的内容,所以起初我并没有怀疑它是否相关,但我想就这个问题提供尽可能多的信息。