RailsでセッションデータをJSON形式で格納する
Nodeとセッションデータを共有しようと思ったらMarshalのアンシリアライズできねえ!ってなったので。AWS環境でELB挟んでsocket.IOとか使いたいのでRedisにストアした。
Node側ではio.configureで、RailsのセッションキーからRedis覗いてhandshake.sessionにデータ入れればいけました。
config/initializers/session_store.rb
RailsApp::Application.config.session_store :redis_store, :servers => "redis://#{Constants.redis.host}:#{Constants.redis.port}/#{Constants.redis.db}", :expire_in => 60 * 60 * 24 * 7 * 2 class Redis class Store < self module Marshalling private def _marshal(val, options) yield marshal?(options) ? val.to_json : val end def _unmarshal(val, options) unmarshal?(val, options) ? JSON.parse(val) : val end end end end