public
Description: ActiveRecord connection proxy for master/slave connections
Clone URL: git://github.com/technoweenie/masochism.git
Added support for declaring your master database configuration 
per-environment (with a fallback to the old behavior of looking for a 
single declaration of "master_database").

To use, simply nest a master_database declaration in the desired 
environment:

login: &login
  adapter: mysql
  username: database_user
  password: foo

staging:
  database: staging_database
  host: stage-db-server.local
  <<: *login
  master_database:
    database: staging_database
    host: master-db-server.local
    <<: *login
jsmecham (author)
Tue Jul 01 12:54:07 -0700 2008
commit  0b58f4511dbc2747912935b24725892cae403ec9
tree    302af071042fbc414832e3c4569c6851a4cf781f
parent  cccfa41154f28953944f063c9682a4a05308e861
0
...
1
2
 
3
4
5
6
7
8
9
10
 
 
 
11
12
13
...
16
17
18
19
 
20
21
 
22
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
25
26
...
1
 
2
3
4
5
6
7
8
 
 
9
10
11
12
13
14
...
17
18
19
 
20
21
 
22
23
 
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
0
@@ -1,13 +1,14 @@
0
 masochism
0
-==============
0
+=========
0
 
0
 The masochism plugin provides an easy solution for Ruby on Rails applications to
0
 work in a replicated database environment. Connection proxy sends some database
0
 queries (those in a transaction, update statements, and ActiveRecord::Base#reload)
0
 to a master database, and the rest to the slave database.
0
 
0
-The ActiveReload::MasterDatabase model uses a 'master_database' setting in
0
-database.yml to serve as the master database.
0
+The ActiveReload::MasterDatabase model uses a 'master_database' setting that
0
+can either be defined for all of your environments, or for each environment as
0
+a nested declaration:
0
 
0
   # config/database.yml
0
   login: &login
0
@@ -16,11 +17,24 @@ database.yml to serve as the master database.
0
     port: 5432
0
 
0
   production:
0
- database: slave_database_name
0
+ database: production_slave_database_name
0
     <<: *login
0
-
0
+
0
   master_database:
0
- database: master_database_name
0
+ database: production_master_database_name
0
+ <<: *login
0
+
0
+ staging:
0
+ database: staging_database_name
0
+ host: slave-db-pool.local
0
+ <<: *login
0
+ master_database:
0
+ database: staging_database_name
0
+ host: master-db-server.local
0
+ <<: *login
0
+
0
+ development: # Does not use masochism
0
+ database: development_database_name
0
     <<: *login
0
 
0
 To setup:
...
1
2
3
4
 
5
6
7
...
1
2
3
 
4
5
6
7
0
@@ -1,7 +1,7 @@
0
 module ActiveReload
0
   class MasterDatabase < ActiveRecord::Base
0
     self.abstract_class = true
0
- establish_connection :master_database
0
+ establish_connection configurations[Rails.env]['master_database'] || :master_database
0
   end
0
 
0
   class ConnectionProxy

Comments

    No one has commented yet.