遇到了一个非常混乱的问题
我的本地应用程序正在其staging
环境中运行。我使用puma-dev作为服务器,当我通过运行tail -f ~/Library/Logs/puma-dev.log
来追踪它时,它会说环境是开发环境,但是当我使用<%= Rails.env %>
登录到我的视图时,它会说staging
并且应用程序尝试使用任何staging
环境变量,而不是development
环境的变量。
该应用程序具有Development
、Staging
、Test
和Production
环境。直到最近,我才注意到它正在运行staging,我不确定它是如何或何时切换过来的,但在过去的几年中它一直在dev上良好运行,最近添加了一个staging env以帮助rails升级,在过去的一周中,这个应用程序开始在staging下运行。
我一直认为启动时由服务器设置,但puma-dev说它的环境是开发环境。我不知道它如何尝试在staging下运行。
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个变量:
1. <%= Rails.env %> 最终为 staging 2. <%= ENV["RAILS_ENV"] %> 什么也没有显示 3. <%= ENV["RACK_ENV"] %> 最终为 development
此外,如果我运行rails控制台并键入Rails.env,它也会返回“development”。
我还使用下面答案中的建议运行了RAILS_ENV=development rails server。这样做时,ENV["RAILS_ENV"]和ENV["RACK_ENV"]都设置为开发环境,但应用程序仍在staging模式下运行(因此上面的第一个变量未更改,但第二个变量已更改)。
该应用程序仍然尝试使用所有已设置的staging环境变量(S3等)。对于这个应用程序,我最近从Rails 3.*更新到4.2(我知道这些版本很旧。我继承了这些应用程序并正在处理它们)。这是添加staging环境的原因。我无法在升级指南中找到任何关于这种问题的讨论,因此起初我并没有怀疑它与此有关,但我想在此问题上提供尽可能多的信息。
rails server -e staging
命令启动服务器吗?根据你的问题,@tar 的评论似乎正是你所需要的。在你的回答中包含更多的代码将有助于我们不假设你还没有完成某些操作。 - undefined