Rails 2.2.xでsession_idをもとにセッションにデータを突っ込む

例えば、外部にある認証系がこちらのAPIを叩く場合など、セッションが継続してないからsessionからデータを入れられないんだけど、session_idはわかってるからどうにかしたいな、というときに。

今更ながらRails 2.2.2で試してみた。2.3.x以降ではCGIモジュールは破棄されてRackに移行したので、全く変わってる気がする。

class SomeController < ActionController::Base
  session :off
  def index
    session_id = (get session_id ...)
    
    # CgiRequestとRackRequestに対応
    options = request.class.get_const("DEFAULT_SESSION_OPTIONS").merge(:session_id => session_id)
    my_session = CGI::Session.new(request.cgi, options.stringify_keys)
    my_session[:foo] = :bar
    my_session.close
  end
end