Railsが生産中であるかどうかを見分ける方法は?


86

私は以前script/server -e production、本番モードでレールを起動していました。実行され、エラーは発生しませんでした。ただし、本番モードであるかどうかはどうすればわかりますか?存在しないルートを試しましたが、開発時に行ったのと同様のエラーページが表示されました。

本番モデルでは、/ publicフォルダーにある404エラーページが表示されると思いました。

プロダクションモードで起動しなかったということですか?

ご協力いただきありがとうございます。

回答:


34

2つの簡単な方法:

tail -f log/production.log

アプリを押した後にそのログに入力されるエントリがある場合は、本番モードになっています。

2番目の方法:

ビューの1つ(おそらくレイアウトは良好です)に、追加するだけです

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

そして、それはあなたが実行している環境を示します。

編集

リクエストが「ローカル」(ローカルホストまたは127.0.0.1から)と見なされる場合、どの環境でも実際のエラーページではなく、デフォルトの例外ページが表示されます。これをに追加することで、これをオーバーライドできます。 ApplicationController

def local_request?
  false
end

このメソッドは、APIのドキュメントにあります。


2番目の方法を実行できませんが、production.logに、X時にタスクを作成したというエントリがあります。では、なぜ正しい404エラーページが表示されないのですか?正しいエラーページを提供するためにどこかを指定する必要がありますか?助けてくれてありがとう。
sent-hil 2009

ビューにエラーが発生し、代わりに@Krishnaprasadのアプローチを使用する必要がありました。
besi 2013

5
RAILS_ENVは非推奨であることに注意してください。Rails.env代わりに使用してください。
Soullivaneuh 2015

238

Rails 3.1以降の場合、本番環境でRails.env.production?戻りtrueます。

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

2
>> Rails.envviarails cは、どのモードでも表示されるように見えます。
obfk 2012

6
Rails.env.development?また利用できます。
hlcs 2014

疑問符の付いたものはすべて利用できます。Rails.envで飾られた文字列ActiveSupport::StringInquirerです。api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Sebastian vom Meer

注意として、これはレールコンソールでも機能します。本番サーバーでは、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サーバーを再起動して、コマンドラインの2行目を読む方がはるかに簡単であることがわかりました。

実行中のrails s -e production出力:

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

例ではWebrickを使用していましたが、サーバーの変更が名前の代わりになる方法を理解していない人もいました。わかりやすくするために更新しました。


8
正気の人は誰もWEBrick本番環境で使用していません。
ハウレス2014

ハウレスは絶対に正しいです。これは単に、開発中にどの環境にいるかをテストするためのものです。
bkunzi01 2015

この答えがトローリングである場合、それは習得です!おめでとう!
JD。

-2

コマンドラインの代替

$ echo $ RAILS_ENV


サーバーがインラインENV変数で開始された場合、これは機能しません。そうは言っても、これが行われた場合、スクリプト/エイリアス/などはディスク上のどこかに存在するはずです。これにはRAILS_ENV変数が含まれます。次のように、ディスクでディスクを検索できますack
New Alexandria

これは機能しません....変数には何があり、どのように環境を取得していますか?
zee 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.