ActiveRecord Store of sessions in a separate database

I’d like to be able to save sessions in a separate database.

I created the following model below in session.rb:

class Session < ActiveRecord::Base self.abstract_class = true establish_connection :userdb

end

I seem to be missing something however, as the server still tries to find the sessions table in the default database and not in the one I label as :userdb in my database.yml. What may that be?

Thanks in advance,

-Al

Actually, connecting to this database works from the console. That is, doing a simple Session.find(1) will display the right results. However, rails isn’t even referring to this model to know which database to connect to.

So, what I think is lacking is something that connects rails’ use of the actual session to the Session model that I created.

Using a symbol works if the connection information is in database.yml. You supply the name of the connection only, allowing you to keep all database connections defined in one locaation.

Lutz Horn wrote:

I believe you need the following in your environment.rb

config.action_controller.session_store = Session

You have to supply the name of your class that you wish to use. Hope this helps ya.

Al wrote:

That didn’t seem to work as I got a

load_missing_constant’: uninitialized constant Session

when ran server.

you will have to require it first since rails will not have loaded your class yet. just use a require above that line like:’

require File.join(File.dirname(FILE), ‘app/models/session.rb’)

Al wrote:

Odd… After adding that require line, I get the following error when launching script/server:

=> Booting Mongrel (use ‘script/server webrick’ to force WEBrick) => Rails application starting on http://0.0.0.0:3412 => Call with -d to detach => Ctrl-C to shutdown server ** Starting Mongrel listening at 0.0.0.0:3412 ** Starting Rails with development environment…

Exiting /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/servers/mongrel.rb:15: warning: already initialized constant OPTIONS /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/servers/mongrel.rb:18: undefined method `options’ for :Array (NoMethodError)

    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require'
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `require'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-

1.4.2/lib/active_support/dependencies.rb:495:in require' from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:342:in new_constants_in’ from /usr/local/lib/ruby/gems/1.8/gems/activesupport- 1.4.2/lib/active_support/dependencies.rb:495:in require' from /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/server.rb:39 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in gem_original_require’

    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
    from ./script/server:3

Resolved this after updating my gems, and then running script/about and I saw that it wasn’t loading the file path correctly. So, my new problem is when reading session.rb, it says “uninitialized constant ActiveRecord”.