如何判断导轨是否在生产中?

sen*_*hil 81 development-environment ruby-on-rails production-environment

我曾经script/server -e production在生产模式下启动rails.它确实没有错误.但是,如何判断它是否处于生产模式?我尝试了一条不存在的路由,我在开发过程中遇到了类似的错误页面.

我想如果在生产模型下,我得到了我/ public文件夹中的404错误页面.

这是否意味着它没有以生产模式启动?

谢谢你的帮助.

Kri*_*rma 227

如果它的Rails 3.1+,Rails.env.production?true在生产时返回.

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  
Run Code Online (Sandbox Code Playgroud)

  • `Rails.env.development?`也可用. (6认同)
  • 通过“ rails c”显示的“ >> Rails.env”似乎在任何模式下都显示。 (2认同)

Dan*_*vin 33

2种简单方法:

tail -f log/production.log
Run Code Online (Sandbox Code Playgroud)

如果在您点击应用程序后存在填充该日志的条目,则表示您处于生产模式.

第二种方式:

在你的一个视图中(可能布局很好),只需添加即可

<%= "Environment: #{RAILS_ENV}" %>
Run Code Online (Sandbox Code Playgroud)

这将向您展示您正在运行的环境.

编辑

如果请求被视为"本地"(即来自localhost或127.0.0.1),您将在任何环境中看到默认的异常页面而不是实际的错误页面,您可以通过将此添加到您的 ApplicationController

def local_request?
  false
end
Run Code Online (Sandbox Code Playgroud)

您可以在api的文档中找到此方法

  • Please note `RAILS_ENV` is deprecated. Use `Rails.env` instead. (5认同)

Dog*_*her 25

对于现代Rails版本(3+),Rails.env将环境返回为String:

Rails.env #=> "production"
Run Code Online (Sandbox Code Playgroud)

每个环境都有一些有用的访问器将返回Boolean:

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  
Run Code Online (Sandbox Code Playgroud)


Kar*_*kas 8

在您的命令行类型上rails console,然后Rails.env.