active_record_shards 2.7.0 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: