Slide 1

Slide 1 text

@LukasFittl Cross-Domain Sessions So, how does one write a Rails 4 session store?

Slide 2

Slide 2 text

Biz + UX + Dev @LukasFittl

Slide 3

Slide 3 text

So, 7 years ago we started this company: commit 2086c55b13426c2834f7060ad3739eed68e891c2 Author: Esad Hajdarevic Date: Sun Mar 25 22:47:30 2007 +0000 ! Initial tags+trunk creation git-svn-id: svn://svn.phoria.eu/soup/trunk@1 c0834aa2-9929-0410-9117-c50b2a7daf23

Slide 4

Slide 4 text

Its still around :) ! But it runs Rails 2.3.

Slide 5

Slide 5 text

100+ hours later we’re (almost) on Rails 4.

Slide 6

Slide 6 text

Soooo... Sessions.

Slide 7

Slide 7 text

www.soup.io = Login/Logout/etc

Slide 8

Slide 8 text

mysoup.io = Soup Admin, Create Posts, etc

Slide 9

Slide 9 text

How can we make that work?

Slide 10

Slide 10 text

First thought:

Slide 11

Slide 11 text

Actually, thats pretty painful.

Slide 12

Slide 12 text

What we ended up doing: www.soup.io mysoup.io Memcached / Redis SESSION_ID REMOTE_SESSION_ID

Slide 13

Slide 13 text

Getting a REMOTE_SESSION_ID: http://mysoup.io/
 => http://soup.io/remote/generate?host=mysoup.io
 (requested with main session cookie YYY) ! => http://mysoup.io/?sessid=ZZZ SetCookie: soup_session_id=ZZZ ! => http://mysoup.io/ ! remote_session_link_ZZZ => mysoup.io--YYY Memcached / Redis

Slide 14

Slide 14 text

Lets look at the code :)

Slide 15

Slide 15 text

@LukasFittl Thank you! pganalyze.com