先日に引き続きRailsのTipsです。
実は、来月開催の「Ruby on Railsインストール道場(2)運用環境構築編」は、前回までRails2.0.xをベースにした内容になっていたのですが、次回からRails2.3.4対応に教材を改訂する予定でおります。
といいつつ、ほとんどの内容はちょっとした違いだけで済んでいるのですが、このコースではApache+Mongrelという組み合わせで環境を作るのですが、ひとつだけ結構変わってしまったポイントがあります。それが、mongrel_clusterの設定ファイル(mongrel_cluster.yml)で設定できるアプリケーションのprefix(JavaのWebアプリでいうところのコンテキストパスみたいなものです)です。
mongrel_cluster.ymlに記述することのできたprefix属性は、Rails2.3.4では効かなくなっています(ネット上の情報によれば2.3かららしいです)。かわりに、production.rbなどのファイルに
config.action_controller.relative_url_root = '/プレフィックス'
のように設定します。私の場合、開発時はprefixなし、本番運用時のみprefixありにするので、production.rbに書きますが、開発時も運用時もprefixありでいいなら、environment.rbに書いてもいいでしょう。
そして、このMongrelにApacheのリバースプロキシで接続するようにしている場合は、
<VirtualHost *:80>
ServerAdmin www
DocumentRoot /home/www/rails/app
ServerName localhost
ErrorLog logs/app.com-error_log
CustomLog logs/app.com-access_log combined
# ProxyPass/ProxyPassReverseの接続先URLからプレフィックスを外す
ProxyPass /app http://localhost:3000
ProxyPassReverse /app http://localhost:3000
</VirtualHost>
のようにします。今までとの違いは、mongrel_cluster.ymlにprefixをつけていたときはProxyPass/ProxyPassReverseの接続先URLにも同じくプレフィックスが必要だったのですが、前述のconfig.action_controller.relative_url_root
を使う場合には、接続先URLにはプレフィックスはつけなくてよいことになりました。私は最初これがわからなくてだいぶ時間を使ってしまいました。
参考になりましたら幸いです。
また、これらを含めた運用環境のインストール手順については、「Ruby on Railsインストール道場(2)運用環境構築編」で扱いますので是非ご検討ください。