RailsとUnicornでサブディレクトリのデプロイについて

unicorn_railsのオプションでアプリのURLにprefixをつけることができる。

unicorn_rails --path /foo -D -e production

このまま実行するとルートのエラーが起きる。
アプリケーション側でprefixを含んだパスを認識できていないためである。
ENV['RAILS_RELATIVE_URL_ROOT']がアプリのルートパスになるので
起動時に対応させる必要があります。

設定ファイルはconfig.ruで行います。

require ::File.expand_path('../config/environment',  __FILE__)
# run Foo::Application
if ENV['RAILS_RELATIVE_URL_ROOT']
  map ENV['RAILS_RELATIVE_URL_ROOT'] do
    run Foo::Application
  end
else
  run Foo::Application
end

run Foo::Applicationの箇所をコメントアウトして、上のように追加します。