active_record_shards 2.7.0 → 2.7.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,8 +3,7 @@ module ActiveRecordShards
3
3
  module_function
4
4
 
5
5
  def explode(conf)
6
- conf.keys.each do |env_name|
7
- env_config = conf[env_name]
6
+ conf.to_a.each do |env_name, env_config|
8
7
  if shards = env_config.delete('shards')
9
8
  env_config['shard_names'] = shards.keys
10
9
  shards.each do |shard_name, shard_conf|
@@ -14,13 +13,13 @@ module ActiveRecordShards
14
13
  end
15
14
  end
16
15
 
17
- conf.keys.each do |env_name|
18
- env_config = conf[env_name]
16
+ conf.to_a.each do |env_name, env_config|
19
17
  if slave_conf = env_config.delete('slave')
20
18
  expand_child!(env_config, slave_conf)
21
19
  conf["#{env_name}_slave"] = slave_conf
22
20
  end
23
21
  end
22
+
24
23
  conf
25
24
  end
26
25
 
@@ -135,7 +135,10 @@ module ActiveRecordShards
135
135
  end
136
136
 
137
137
  def shard_names
138
- configurations[shard_env]['shard_names'] || []
138
+ unless config = configurations[shard_env]
139
+ raise "Did not find #{shard_env} in configurations, did you forget to add it to your database.yml ? (configurations: #{configurations.inspect})"
140
+ end
141
+ config['shard_names'] || []
139
142
  end
140
143
 
141
144
  private
@@ -1,19 +1,20 @@
1
1
  module ActiveRecordShards
2
2
  module DefaultSlavePatches
3
- CLASS_SLAVE_METHODS = [ :find_by_sql, :count_by_sql, :calculate, :find_one, :find_some, :find_every, :quote_value, :sanitize_sql_hash_for_conditions ]
3
+ CLASS_SLAVE_METHODS = [ :find_by_sql, :count_by_sql, :calculate, :find_one, :find_some, :find_every, :quote_value, :sanitize_sql_hash_for_conditions, :exists? ]
4
4
 
5
5
  def self.extended(base)
6
6
  base_methods = (base.methods | base.private_methods).map(&:to_sym)
7
7
  (CLASS_SLAVE_METHODS & base_methods).each do |slave_method|
8
+ _, slave_method, punctuation = slave_method.to_s.match(/^(.*?)([\?\!]?)$/).to_a
8
9
  base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
9
10
  class << self
10
- def #{slave_method}_with_default_slave(*args, &block)
11
+ def #{slave_method}_with_default_slave#{punctuation}(*args, &block)
11
12
  on_slave_unless_tx do
12
- #{slave_method}_without_default_slave(*args, &block)
13
+ #{slave_method}_without_default_slave#{punctuation}(*args, &block)
13
14
  end
14
15
  end
15
16
 
16
- alias_method_chain :#{slave_method}, :default_slave
17
+ alias_method_chain :#{slave_method}#{punctuation}, :default_slave
17
18
  end
18
19
  RUBY
19
20
  end
@@ -1,4 +1,4 @@
1
- require File.expand_path('helper', File.dirname(__FILE__))
1
+ require_relative 'helper'
2
2
 
3
3
  class ConfigurationParserTest < ActiveSupport::TestCase
4
4
  context "exploding the database.yml" do
@@ -1,4 +1,4 @@
1
- require File.expand_path('helper', File.dirname(__FILE__))
1
+ require_relative 'helper'
2
2
 
3
3
  class ConnectionSwitchingTest < ActiveSupport::TestCase
4
4
  context "shard switching" do
@@ -396,6 +396,12 @@ class ConnectionSwitchingTest < ActiveSupport::TestCase
396
396
  assert_equal 'master_name', account.reload.name
397
397
  end
398
398
 
399
+ should "do exists? on the slave" do
400
+ if Account.respond_to?(:exists?)
401
+ assert Account.exists?(1001)
402
+ end
403
+ end
404
+
399
405
  should "Allow override using on_master" do
400
406
  model = Account.on_master.find(1000)
401
407
  assert_equal "master_name", model.name
data/test/database.yml CHANGED
@@ -1,14 +1,14 @@
1
1
  test:
2
- adapter: mysql
2
+ adapter: mysql2
3
3
  encoding: utf8
4
4
  database: ars_test
5
5
  username: root
6
6
  password:
7
7
  host: 127.0.0.1
8
8
  shard_names: ['0', '1']
9
-
9
+
10
10
  test_slave:
11
- adapter: mysql
11
+ adapter: mysql2
12
12
  encoding: utf8
13
13
  database: ars_test_slave
14
14
  username: root
@@ -16,7 +16,7 @@ test_slave:
16
16
  host: 127.0.0.1
17
17
 
18
18
  test_shard_0:
19
- adapter: mysql
19
+ adapter: mysql2
20
20
  encoding: utf8
21
21
  database: ars_test_shard0
22
22
  username: root
@@ -24,7 +24,7 @@ test_shard_0:
24
24
  host: 127.0.0.1
25
25
 
26
26
  test_shard_0_slave:
27
- adapter: mysql
27
+ adapter: mysql2
28
28
  encoding: utf8
29
29
  database: ars_test_shard0_slave
30
30
  username: root
@@ -32,7 +32,7 @@ test_shard_0_slave:
32
32
  host: 127.0.0.1
33
33
 
34
34
  test_shard_1:
35
- adapter: mysql
35
+ adapter: mysql2
36
36
  encoding: utf8
37
37
  database: ars_test_shard1
38
38
  username: root
@@ -40,7 +40,7 @@ test_shard_1:
40
40
  host: 127.0.0.1
41
41
 
42
42
  test_shard_1_slave:
43
- adapter: mysql
43
+ adapter: mysql2
44
44
  encoding: utf8
45
45
  database: ars_test_shard1_slave
46
46
  username: root
@@ -48,7 +48,7 @@ test_shard_1_slave:
48
48
  host: 127.0.0.1
49
49
 
50
50
  test2:
51
- adapter: mysql
51
+ adapter: mysql2
52
52
  encoding: utf8
53
53
  database: ars_test2
54
54
  username: root
@@ -56,7 +56,7 @@ test2:
56
56
  host: 127.0.0.1
57
57
 
58
58
  test2_slave:
59
- adapter: mysql
59
+ adapter: mysql2
60
60
  encoding: utf8
61
61
  database: ars_test2_slave
62
62
  username: root
@@ -64,7 +64,7 @@ test2_slave:
64
64
  host: 127.0.0.1
65
65
 
66
66
  alternative:
67
- adapter: mysql
67
+ adapter: mysql2
68
68
  encoding: utf8
69
69
  database: ars_test_alternative
70
70
  username: root
data/test/helper.rb CHANGED
@@ -1,11 +1,10 @@
1
1
  require 'rubygems'
2
2
  require 'bundler'
3
+ require 'test/unit'
3
4
 
4
5
  Bundler.setup
5
6
  Bundler.require(:default, :development)
6
7
 
7
- require 'mocha'
8
-
9
8
  if defined?(Debugger)
10
9
  ::Debugger.start
11
10
  ::Debugger.settings[:autoeval] = true if ::Debugger.respond_to?(:settings)
@@ -15,6 +14,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
15
14
  $LOAD_PATH.unshift(File.dirname(__FILE__))
16
15
  require 'active_record_shards'
17
16
  require 'logger'
17
+ require 'shoulda'
18
18
 
19
19
  RAILS_ENV = "test"
20
20
 
@@ -1,4 +1,4 @@
1
- require File.expand_path('helper', File.dirname(__FILE__))
1
+ require_relative 'helper'
2
2
 
3
3
  class CowardlyMigration < ActiveRecord::Migration
4
4
  def self.up
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_shards
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.7.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-02-07 00:00:00.000000000 Z
14
+ date: 2013-03-13 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activerecord
@@ -35,150 +35,6 @@ dependencies:
35
35
  - - <
36
36
  - !ruby/object:Gem::Version
37
37
  version: '3.3'
38
- - !ruby/object:Gem::Dependency
39
- name: rake
40
- requirement: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- type: :development
47
- prerelease: false
48
- version_requirements: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- - !ruby/object:Gem::Dependency
55
- name: mysql
56
- requirement: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- - !ruby/object:Gem::Dependency
71
- name: mysql2
72
- requirement: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- type: :development
79
- prerelease: false
80
- version_requirements: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- - !ruby/object:Gem::Dependency
87
- name: bundler
88
- requirement: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- type: :development
95
- prerelease: false
96
- version_requirements: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- - !ruby/object:Gem::Dependency
103
- name: shoulda
104
- requirement: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- - !ruby/object:Gem::Dependency
119
- name: mocha
120
- requirement: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - '='
124
- - !ruby/object:Gem::Version
125
- version: 0.12.0
126
- type: :development
127
- prerelease: false
128
- version_requirements: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - '='
132
- - !ruby/object:Gem::Version
133
- version: 0.12.0
134
- - !ruby/object:Gem::Dependency
135
- name: appraisal
136
- requirement: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
142
- type: :development
143
- prerelease: false
144
- version_requirements: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ! '>='
148
- - !ruby/object:Gem::Version
149
- version: '0'
150
- - !ruby/object:Gem::Dependency
151
- name: test-unit
152
- requirement: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ! '>='
156
- - !ruby/object:Gem::Version
157
- version: 2.5.1
158
- type: :development
159
- prerelease: false
160
- version_requirements: !ruby/object:Gem::Requirement
161
- none: false
162
- requirements:
163
- - - ! '>='
164
- - !ruby/object:Gem::Version
165
- version: 2.5.1
166
- - !ruby/object:Gem::Dependency
167
- name: debugger
168
- requirement: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ! '>='
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- none: false
178
- requirements:
179
- - - ! '>='
180
- - !ruby/object:Gem::Version
181
- version: '0'
182
38
  description: Easily run queries on shard and slave databases.
183
39
  email:
184
40
  - mick@staugaard.com
@@ -213,7 +69,8 @@ files:
213
69
  - test/models.rb
214
70
  - test/schema.rb
215
71
  homepage: http://github.com/staugaard/active_record_shards
216
- licenses: []
72
+ licenses:
73
+ - MIT
217
74
  post_install_message:
218
75
  rdoc_options: []
219
76
  require_paths: