Grape on Rails and Session
intridea/grapeでAPIをRailsにmountして使っていて、両方のCookieSessionを共有したかった。
最終的に以下のようなhelper methodを用意することに落ち着いた。
# routes.rb FooBar::Application.routes.draw do mount API => "/api" end
# api.rb class API < Grape::API format :json helpers do def session env[Rack::Session::Abstract::ENV_SESSION_KEY] end end mount API::V1 end
余談
Session is responsible for lazily loading the session from store.
にあるようにsessionの情報はSession#[]
やSession#[]=
の初回呼び出し時にloadされ、
その前にSession#inspect
が呼ばれると#<Session [id] not yet loaded>
が返ってくる。