如何判断铁路是否在生产中?

我使用 script/server -e production在生产模式下启动轨道。是的,我没有出错。但是如何判断它是否处于生产模式?我尝试了一个不存在的路由,并且在开发中得到了一个类似的错误页面。

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

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

谢谢你的帮助。

67338 次浏览

2 easy ways:

tail -f log/production.log

if there are entries populating that log after you hit the app, you're in production mode.

second way:

in one of your views (probably the layout is good), just add

<%= "Environment: #{RAILS_ENV}" %>

And that will show you what the environment that you're running in.

edit

You will see the default exception page instead of the actual error pages on any environment if the request is considered "local" (that is from localhost or 127.0.0.1), you can override this by adding this to your ApplicationController

def local_request?
false
end

You can find this method in the docs in the api

If its Rails 3.1+, Rails.env.production? will return true when in production.

Rails.env.production?  #=> true
Rails.env.staging?     #=> false
Rails.env.development? #=> false

command line alternative

$echo $RAILS_ENV

For modern Rails versions (3+), Rails.env returns the environment as a String:

Rails.env #=> "production"

There are also helpful accessors* for each environment that will return a Boolean:

Rails.env.production?  #=> true
Rails.env.staging?     #=> false
Rails.env.development? #=> false

(*) There's a gotcha here: these aren't real accessors. They're just strings of letters and if they happen to match the current environment name, they return true. They fail silently. That means that you can be in production, but if have a typo in this code, you won't get an error, you'll simply get false:

Rails.env.producton?  #=> false

For that reason, I set constants in an initializer and only refer to those in the rest of my code. This lets the Ruby interpreter help me catch my own errors:

PRODUCTION = Rails.env.production?
DEVELOPMENT = Rails.env.development?
TEST = Rails.env.test?

I found it much easier to just restart the rails server and read the second line on the command line:

Running rails s -e production outputs:

=> Booting Puma
=> Rails 4.2.4 application starting in `production` on http://localhost:3000

Had Webrick in the example but some people didn't understand how changing servers would just substitute the name. Updated for clarity.

On your command line type rails console, then Rails.env.