解決策が見つかりました!
これは、Mongrel + Rails 2.3.8 (Rails+cPanel で使用される Web サーバー) に固有のバグのようです。これが、cPanel からアプリを実行した場合にのみ表示され、スクリプト/サーバーを介してローカルで提供する場合には表示されない理由です。
見つかった最終的な回避策は、次のファイルを新しい Rails 2.3.8 アプリの /config/initializers ディレクトリに配置することです。
https://gist.github.com/471663
このイニシャライザを追加すると、Rails アプリは期待どおりに機能します。
元の質問:
railsforzombies.org の非常に役立つチュートリアルを読み終えたので、RoR のテスト インストールを開始する準備が整いました。私のサイトは、cPanel を使用して共有ホスト上にあります。cPanel を使用してテスト アプリケーションを作成し、~/rails_apps/blog にセットアップしました。mydomain.com/testblog/ を mydomain.com:12002 にリダイレクトする書き換えを作成しました。これは、cPanel が RoR アプリを実行しているポートです。また、開発モードで cPanel を介してアプリケーションを起動しました。
mydomain.com/testblog/ にアクセスすると、RoR アプリが作成され、機能していることを知らせる役立つページが表示されます。いいですよね?まあ、それほど速くはありません。
guides.rubyonrails.org/v2.3.8/getting_started.html の Getting Started ガイドに従い、ステップ 4 に進みます。app script/generate controller home index
/views/home/index で結果のビューを実行して編集しました。 html.erb. それはただの単純なことです
<h1>Hello rails!</h1>
ただし、mydomain.com/testblog/home/index (末尾の「/」の有無にかかわらず) にアクセスすると、ブラウザーに空白のページが表示され、何も表示されません (ソースを表示しても何も表示されません)。
気が狂わないように、Rails アプリの /public ディレクトリにテキスト ファイルを置き、mydomain.com/testblog/test.txt にアクセスすると、適切に提供されます。したがって、cPanel からの Apache の書き換えが正常に機能していることはわかっています。
何か案は?明らかなことを見落としていると思いますが、今のところ空白を描いています。
参考までに、私は cPanel 11、Ruby 1.8.7、Rails 2.3.8 で実行しています。Rails 3.0 を走らせたいと思っていますが、共有ホストは今のところ無理だと言っています。
編集して追加:
上記のホームコントローラーとインデックスアクションを生成すると、routes.rb ファイルに次の行が追加されました (チェックしたところ、そこにありました)。
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
したがって、mydomain.com/testblog/home/index は app/views/home/index.html.erb にマップする必要があります。
調査の詳細を追加して再度編集しました。
これに光を当てるかもしれない何かを見つけました。cPanel で Rails アプリを停止した場合は、PuTTY 経由でログインし、開発サーバーを起動しscript/server
て実行します。
curl http://0.0.0.0:3000/home/index
開発サーバーは応答します
<h1>Hello Rails!</h1>
からapp/views/home/index.html.erb
。だからそれはそこで働いています。mydomain.com/testblog/home/index から空の応答を受け取るのは、cPanel で Rails アプリを起動したときです (ポート 12002 で実行されていることがわかります)。から空の応答も取得します
curl http://0.0.0.0:12002
サーバー上でSSH経由で実行した場合。したがって、Rails ではなく、cPanel ではおかしなことのように見えます。