I'm currently using the default cookies as my single sign on (SSO) but some users are getting strange errors after I push an update. I'm considering moving to active record to store sessions but was wondering how I tell rails that the sessions are in another database?
So if I store sessions via AR in App1DB how can all the other apps know thats where to look for sessions?
Rails most certainly does support database session storage.
In config/environment.rb, uncomment
# config.action_controller.session_store = :active_record_store
Examining \actionpack-2.2.2\lib\action_controller\session\active_record_store.rb shows that CGI::Session::ActiveRecordStore::Session inherits from ActiveRecord::Base.
So at the end of config/environment.rb, you should be able to say
CGI::Session::ActiveRecordStore::Session.establish_connection(
:adapter => "mysql",
:host => "otherserver",
:username => "session_user",
:password => "123ABC",
:database => "sessions")
or
CGI::Session::ActiveRecordStore::Session.establish_connection(:sessions)
to use a connect defined in config/database.yml
For example, add to config/database.yml:
sessions_development:
adapter: mysql
host: otherserver
username: sessions_user
password: 123ABC
database: sessions
Add to the end of config/environment.rb
CGI::Session::ActiveRecordStore::Session.establish_connection("sessions_#{RAILS_ENV}")
In rails 2.3
open config/initializers/session_store.rb
uncomment the line ActionController::Base.session_store = :active_record_store
change the key's value on the line which looks like :key => '_YOUR_APP_NAME_session'
then restart your server.
The result will change your store, and invalidate all old cookies
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With