我使用了script/server -e production
来启动Rails的生产模式,没有出现错误。但是如何确定它是否处于生产模式下呢?我试图访问一个不存在的路由,却得到了类似于在开发中得到的错误页面。
我认为如果处于生产模式下,我会得到我的`/public`文件夹中的404错误页面。
这是不是意味着它并没有以生产模式启动呢?
感谢您的帮助!
我使用了script/server -e production
来启动Rails的生产模式,没有出现错误。但是如何确定它是否处于生产模式下呢?我试图访问一个不存在的路由,却得到了类似于在开发中得到的错误页面。
我认为如果处于生产模式下,我会得到我的`/public`文件夹中的404错误页面。
这是不是意味着它并没有以生产模式启动呢?
感谢您的帮助!
如果使用的是Rails 3.1+,Rails.env.production?
在生产环境下会返回true
。
Rails.env.production? #=> true
Rails.env.staging? #=> false
Rails.env.development? #=> false
对于现代的 Rails 版本(3+),Rails.env
返回一个 String
类型的环境变量:
Rails.env #=> "production"
每个环境还有一个有用的访问器,它将返回一个 Boolean
值:
Rails.env.production? #=> true
Rails.env.staging? #=> false
Rails.env.development? #=> false
(*) 这里有一个“小陷阱”:这些不是真正的访问器。它们只是一些字母字符串,如果它们恰好与当前环境名称匹配,则返回true。它们会默默失败。这意味着您可能处于生产环境中,但如果此代码中有拼写错误,则您将不会收到错误消息,而是会简单地得到false
:
Rails.env.producton? #=> false
出于这个原因,我在初始化器中设置常量,并且只在我的代码的其余部分中引用它们。这使得 Ruby 解释器能够帮助我捕捉自己的错误:
PRODUCTION = Rails.env.production?
DEVELOPMENT = Rails.env.development?
TEST = Rails.env.test?
有两种简单的方法:
tail -f log/production.log
如果在你启动应用后,日志中有条目,那么你就处于生产模式。
第二种方式:
在你的视图中的任意一个位置(通常是布局比较好),只需添加下面的代码:
<%= "Environment: #{RAILS_ENV}" %>
这将向您展示您正在运行的环境。
编辑
如果请求被视为“本地”(即来自localhost或127.0.0.1),则在任何环境下,您将看到默认的异常页面而不是实际的错误页面。您可以通过向 ApplicationController
中添加以下内容来覆盖此行为。
def local_request?
false
end
你可以在文档的API中找到这个方法。
RAILS_ENV
е·ІдёЌжЋЁиЌђдЅїз”ЁгЂ‚
иЇ·ж”№з”ЁRails.env
гЂ‚ - Soullivaneuhrails console
,然后输入Rails.env
。我发现重新启动rails服务器并读取命令行的第二行要容易得多:
运行rails s -e production
会输出:
=> Booting Puma
=> Rails 4.2.4 application starting in `production` on http://localhost:3000
在示例中我们使用了Webrick,但有些人不理解如何更改服务器名称。为了更清晰地说明,进行了更新。
WEBrick
。 - Haulethack
。 - New Alexandria
rails c
运行的命令>> Rails.env
似乎可以显示任何环境模式。 - originalhatRails.env
是一个由ActiveSupport::StringInquirer
装饰的字符串。http://api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html - Sebastian vom Meer