私は以前script/server -e production
、本番モードでレールを起動していました。実行され、エラーは発生しませんでした。ただし、本番モードであるかどうかはどうすればわかりますか?存在しないルートを試しましたが、開発時に行ったのと同様のエラーページが表示されました。
本番モデルでは、/ publicフォルダーにある404エラーページが表示されると思いました。
プロダクションモードで起動しなかったということですか?
ご協力いただきありがとうございます。
回答:
2つの簡単な方法:
tail -f log/production.log
アプリを押した後にそのログに入力されるエントリがある場合は、本番モードになっています。
2番目の方法:
ビューの1つ(おそらくレイアウトは良好です)に、追加するだけです
<%= "Environment: #{RAILS_ENV}" %>
そして、それはあなたが実行している環境を示します。
編集
リクエストが「ローカル」(ローカルホストまたは127.0.0.1から)と見なされる場合、どの環境でも実際のエラーページではなく、デフォルトの例外ページが表示されます。これをに追加することで、これをオーバーライドできます。 ApplicationController
def local_request?
false
end
このメソッドは、APIのドキュメントにあります。
RAILS_ENV
は非推奨であることに注意してください。Rails.env
代わりに使用してください。
Rails 3.1以降の場合、本番環境でRails.env.production?
戻りtrue
ます。
Rails.env.production? #=> true
Rails.env.staging? #=> false
Rails.env.development? #=> false
>> Rails.env
viarails c
は、どのモードでも表示されるように見えます。
Rails.env.development?
また利用できます。
Rails.env
で飾られた文字列ActiveSupport::StringInquirer
です。api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
最新のRailsバージョン(3以降)の場合Rails.env
、環境を次のように返しますString
。
Rails.env #=> "production"
を返す各環境に役立つアクセサもありますBoolean
:
Rails.env.production? #=> true
Rails.env.staging? #=> false
Rails.env.development? #=> false
コマンドラインで「」と入力しrails console
、次にRails.env
。
railsサーバーを再起動して、コマンドラインの2行目を読む方がはるかに簡単であることがわかりました。
実行中のrails s -e production
出力:
=> Booting Puma
=> Rails 4.2.4 application starting in `production` on http://localhost:3000
例ではWebrickを使用していましたが、サーバーの変更が名前の代わりになる方法を理解していない人もいました。わかりやすくするために更新しました。
WEBrick
本番環境で使用していません。
コマンドラインの代替
$ echo $ RAILS_ENV
ack