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


86

我用了 script/server -e production在生产模式下启动Rails。做到了,我没有任何错误。但是,如何知道它是否处于生产模式?我尝试了一条不存在的路由,并且在开发中遇到了类似的错误页面。

我想如果在生产模式下,我会在/ public文件夹中看到404错误页面。

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

谢谢你的帮助。

Answers:


34

2种简单方法:

tail -f log/production.log

如果您在点击应用后有条目填充该日志,则说明您处于生产模式。

第二种方式:

在您的一种视图中(可能是布局很好),只需添加

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

这将向您显示您正在运行的环境。

编辑

如果将请求视为“本地”(来自本地主机或127.0.0.1),则在任何环境下您都将看到默认的异常页面,而不是实际的错误页面,您可以通过将其添加到 ApplicationController

def local_request?
  false
end

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


我无法获得第二种工作方式,但是在production.log中有一些条目说我在X时间创建了一个Task。那么,为什么我没有得到正确的404错误页面?我必须指定某个地方来提供正确的错误页面吗?谢谢您的帮助。
send-hil 09年

我的观点有误,不得不使用@Krishnaprasad的方法。
Besi 2013年

5
请注意,RAILS_ENV已弃用。使用Rails.env代替。
Soullivaneuh's

238

如果是Rails 3.1+,Rails.env.production?则将true在生产时返回。

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

2
>> Rails.env通过rails c似乎可显示任何模式。
obfk 2012年

6
Rails.env.development?也提供。
hlcs 2014年

带有问号的所有内容均可用。Rails.env是一个用ActiveSupport::StringInquirerapi.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Sebastian vom Meer

只是要注意,这在rails控制台中也适用。在生产服务器上,我可以运行:rails console,然后运行上面的命令。
瑞安

28

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

Rails.env #=> "production"

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

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


3

我发现重新启动Rails服务器并在命令行中阅读第二行要容易得多:

运行rails s -e production输出:

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

在示例中有Webrick,但有些人不了解更改服务器将如何替换名称。为清楚起见进行了更新。


8
没有人WEBrick在生产中使用理智。
Hauleth 2014年

Hauleth是绝对正确的。这仅仅是为了测试您在开发中所处的环境。
bkunzi01 2015年

如果这个答案在拖延,那就太精通了!恭喜你!
京东。

-2

命令行替代

$ echo $ RAILS_ENV


如果服务器是使用嵌入式ENV var启动的,则此方法将无效。也就是说,如果这样做,则脚本/别名/ etc应该位于磁盘上的某个位置,其中将包含RAILS_ENV var。人们可以在磁盘上搜索磁盘,例如ack
New Alexandria

这是行不通的。...变量中有什么以及如何获取环境?
zee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.