えーと例によってRuby on Railsのいつものことながらドキュメントがあるのかないのか分からないというかなんというか黒魔術ですが何かもいいかげんにしろ的アレなのだが、2.3になってからsession_optionsの書き換え方が変わったらしくてjpmobileなどで困ったことになってへにょろもげーな感じなのである。
以前は、application.rbに
session :session_key => '_MyApp_session' session :cookie_only => false
なんて設定してれば良かったのだがこれが効かなくなった。
ぐぐって見ると以下のような記述もあるのだが、
session_options['session_key'] = '_MyApp_session' session_options['cookie_only'] = false
どうもこれは間違いっぽい? 2.3初期ではこれでもいけたのかな? 少なくとも2.3.3/2.3.4ではこれは効かなくて、actionpackのsession_managemant.rbを見てみると、
# Returns the hash used to configure the session. Example use:
#
# ActionController::Base.session_options[:secure] = true # session only available over HTTPS
なんてコメントがある。つまり……
ActionController::Base.session_options[:key] = '_MyApp_session' ActionController::Base.session_options[:cookie_only] = false
というのをapplication_controller.rbに書いてやる必要があるようだ。
なんで親クラスを明示しなきゃならんのかはまだよく分かってないのだが、ともかくこれでsession_optionsを書き換えられる様子。むー。
原因究明に力をお貸しくださったid:elm200さんに感謝!