ActiveRecord connection proxy for master/slave connections
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 2 commits ahead, 23 commits behind technoweenie:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



The masochism plugin provides an easy solution for Ruby on Rails applications to
work in a replicated database environment. Connection proxy sends some database
queries (those in a transaction, update statements, and ActiveRecord::Base#reload) 
to a master database, and the rest to the slave database. 

The ActiveReload::MasterDatabase model uses a 'master_database' setting in 
database.yml to serve as the master database.

  # config/database.yml
  login: &login
    adapter: postgresql
    host: localhost
    port: 5432

    database: slave_database_name
    <<: *login
    database: master_database_name
    <<: *login

To setup:

Whether you want this in production only, or maybe just your deployment server, 
is up to you. Just call the following method in your desired environment file.


Some suggestions:

  * in a config/initializer
  * config.after_initialize block

If you want a model to always use the Master database, you can inherit 
ActiveRelaod::MasterDatabase.  Any models with their own database connection
will not be affected.

Setting up your own proxies:

  # Sets up MyMaster's connection as the master database connection for User.
  ActiveReload::ConnectionProxy.setup_for MyMaster, User