VPSを利用しています。で新しいRailsアプリを作成しましたrails new rails_app -d mysql
。私はパッセンジャーでnginxを実行しています。Rails 3.2.12 と Ruby 1.9.3 を実行しています。nginx.conf ファイルで、server
ディレクティブに次を追加しました。
listen 80;
server_name www.mydomain.com;
passenger_enabled on;
root /home/mike/www/rails_app/public;
rails_env production;
www.mydomain.com をポイントすると、ようこそ、Ruby on Rails に乗っています! と表示されます。[アプリケーションの環境について] をクリックすると、次のエラーが表示されます。
The page you were looking for doesn't exist.
production.log を確認すると、次のエラーが表示され、どうすればよいかわかりません。
ActionController::RoutingError (No route matches [GET] "/rails/info/properties")
私は一晩中起きていて、これに似た SO の問題をすべて読みましたが、それでも問題を解決できません。これを開発で実行すると、すべて正常に動作します。
編集
Rails 2.3.4 の問題について、次の説明を見つけました。プロパティ アクションは、/rails/railties/builtin/rails_info/rails/info_controller.rb にある Rails::InfoController で定義されています。
ルートは Rails のデフォルト ルート :controller/:action/:id に準拠しているため、明示的に定義する必要はありません (ただし、この場合 ID はなく、コントローラーは Rails 名前空間内にあります)。
しかし、私はどこにも見えませんinfo_controller.rb
。
わかりましたこれを見つけました:config.consider_all_requests_local
はフラグです。true の場合、エラーが発生すると詳細なデバッグ情報が HTTP 応答にダンプされ、Rails::Info コントローラーはアプリケーションのランタイム コンテキストを /rails/info/properties に表示します。開発およびテスト環境ではデフォルトで true であり、プロダクション モードでは false です。より細かく制御するには、これを false に設定し、local_request? を実装します。エラーに関するデバッグ情報を提供する必要があるリクエストを指定します。
しかし、これを false に設定しても何も起こりません。
EDIT 2
わかりました、私はばかです。これをどこかで見つけました:You're clicking the "About your application’s environment" link on the Rails default index.html page. This link only works in development environment, not in production.
そして、この一晩中、自分の Rails アプリが機能していないと思っていました。なので諦めて寝ようと思います。