Slide 13
Slide 13 text
ダブルライト (Write: クッキー & Redis, Read: クッキー)
13
- `class CookieToRedis < ActionDispatch::Session::CookieStore`
- delete_session, commit_session でダブルライト
1 │ class CookieToRedis < ActionDispatch::Session::CookieStore
2 │ def initialize(app, options = {})
3 │ super(app, options[:cookie_store])
4 │ @redis_store = ActionDispatch::Session::RedisStore.new(app, options[:redis_store])
5 │ end
6 │
7 │ def delete_session(req, session_id, options)
8 │ super
9 │ @redis_store = delete_session(req, session_id, options)
10 │ end
11 │
12 │ def commit_session(req, res)
13 │ super
14 │ @redis_store.commit_session(req, res)
15 │ end
16 │ end
17 │
18 │ Rails.application.config.session_store CookieToRedis, {
19 │ cookie_store: { key: "cookie_id" },
20 │ redis_store: { key: "redis_id", servers: ..., expire_after: 2.weeks },
21 │ }