This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
Jon (author)
Tue Jul 01 12:40:59 -0700 2008
commit 8de9fda345c30d7119dda3b639822cd594682d41
tree f16cdc7f7a8b3b20255dee06e6aee72d3a974f2c
parent cccfa41154f28953944f063c9682a4a05308e861
tree f16cdc7f7a8b3b20255dee06e6aee72d3a974f2c
parent cccfa41154f28953944f063c9682a4a05308e861
| name | age | message | |
|---|---|---|---|
| |
LICENSE | Fri Oct 05 22:59:57 -0700 2007 | [rick] |
| |
README | Tue Jul 01 12:40:59 -0700 2008 | [Jon] |
| |
lib/ | Sun May 18 16:49:44 -0700 2008 | [technoweenie] |
README
masochism
==============
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
production:
database: slave_database_name
<<: *login
master_database:
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.
ActiveReload::ConnectionProxy.setup!
Some suggestions:
* in a config/initializer
* config.after_initialize block
If you are using the Litespeed web server, child processes are initialized on
creation, which means any setup done in an environment file will be effectively
ignored. A brief discussion of the problem is posted here:
http://litespeedtech.com/support/wiki/doku.php?id=litespeed_wiki:rails:memcache
One solution for Litespeed users is to check the connection at your first request
and do the setup! call if your connection hasn't been initialized, like:
class ApplicationController < ActionController::Base
prepend_before_filter do |controller|
ActiveReload::ConnectionProxy.setup! unless ActiveRecord::Base.connection.is_a? ActiveReload::ConnectionProxy
end
...
end
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




