サブディレクトリ運用の複数の Redmine で別の Redmine にアクセスすると勝手にログアウトするのを防ぐ

確認したバージョン
問題

Redmine は _redmine_session という Cookie でログイン状態が管理されていてる。

Redmine では、何もしないとパスが "/" で登録されるので、実際に異なるパスの Cookie データでも、同じとみなされてしまう。

なので、別の Redmine にアクセスすると、同じドメイン、パスの同じ Cookie キーなのに、値が違うので、ログインのしなおしになる。

設定方針

config/application.rb の以下の部分にパスを指定すればいいが、このファイルは Git の管理下なのであまり修正しないほうがいい。

    config.session_store :cookie_store, :key => '_redmine_session'

Redmine では、 config/application.rb に追記修正したい場合に、config/additional_environment.rb というファイルを用意している。 このファイルに書かれたコードは、Rails::Application のインスタンス化で eval されるので、 config/application.rb に書いたのと同じように動く。

解決

ということで、それぞれの Redmine の config/additional_environment.rb に以下のように書けばうまく動く。

config.session_store :cookie_store, :key => '_redmine_session', :path => '/XXXX'

XXXX はそれぞれの Redmine で異なる値を入れればよいが、その Redmine が配備されているサブディレクトリパスとかにすればいいと思う。