Rails2.3.2でmongrel_clusterにprefixを付けると起動しない問題
結論からいうと、2.3.2でmongrel_clusterを使うときにconfig/mongrel_cluster.ymlにprefixを指定しているとダメ。mongrel_clusterのインスタンスが起動直後に落ちたログが/log/mongrel.4000.pidなどに残っている。
解決策は、PinMarch: Rails 2.3が動かず苦悩より
config/environments/production.rb に
ActionController::Base.relative_url_root = '/prefix'
を書く。そして config/mongrel_cluster.yml にはprefixを書かないようにする。
ただし、publicディレクトリ下の静的ファイルには mongrel_cluster.yml にprefixを書いた時のようにprefixがつかないので、prefix名と同じ名前のディレクトリを掘ってそっちにコピーするようにした。(404.htmlなど特殊ファイル以外)
mkdir public/prefix cp public/index.html public/prefix
cssやjavascriptディレクトリも移動させた。
メモ。
log/mongrel.4000.pid などに残っていた起動直後に落ちたログ。
ActionController::AbstractRequest がRails2.3.2には無いらしい。
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:440:in `load_missing_constant': uninitialized constant ActionController::AbstractRequest (NameError) from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:80:in `const_missing' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:151:in `rails' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:113:in `cloaker_' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `call' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `listener' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:99:in `cloaker_' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `call' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `initialize' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `new' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `run' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run' from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281 from /usr/bin/mongrel_rails:19:in `load' from /usr/bin/mongrel_rails:19
こうすると古いバージョンのrailsを起動できる。
rails _2.0.2_ rails _2.2.2_ rails _2.3.2_
2.0.2, 2.2.2ではmongrel_clusterでRailsをデプロイ - 橋本詳解がそのまま動くけど、2.3.2はprefixを書く場所を変えなければいけない。