ActionCableでセッションを使う

(追記)ちょっと自信なくなってきた(スタンドアロン版だとちょっと違うのでは?という気がしてきた)ので今度時間のあるときに調べます

Rails Guidesを読むと、Action Cableはセッション使えないと書いてあるのだけど、よくよく考えるとAction Cable はRailsのルーティングにマウントして使う形式だし、そうするとセッション用のRack Middlewareは使われているはずでなんかおかしいぞ…?と思って調べたら普通に

request.session[:user_id]

みたいな感じでセッション情報を取得できた。Rails Guidesはおそらくクッキーセッションを利用して別ドメインでAction Cableのサーバを立ててる前提で書かれてるんじゃないかという気がする。仮に別ドメインでも

  • redisなどのセッションストアを使う
  • Action Cableのサーバをサブドメインにして、セッションクッキーをサブドメインと共有にする

などすれば普通に使えそう(未検証)。

Action Cable Overview — Ruby on Rails Guides