activerecord-sharding 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8b2713a535cf9f95e2904a4840a0b79481eb3839
4
- data.tar.gz: 6dbda049b7d70c553b26d5b242c7b5ff58666070
3
+ metadata.gz: 8b1c1c0941e4e769d5689da33ed7d59408829357
4
+ data.tar.gz: 6b936f7d049b8f3df778f1ed34b90670001c67ca
5
5
  SHA512:
6
- metadata.gz: 9fbfdfea19ab12464e7ed5756434adb7ec025f00a5f9084ac5e195361d360f178869ffa146afe7701e169f1583fb30ee6701db1dd1f14d7641cd8b5298bed498
7
- data.tar.gz: 5f109afa415f5eadbda3fcb3275c61d157c4a5b2901d63958774c96191c0bddc1fac2018301092d4dcae6a26dbe9a0a430b5f06ce57bc8049417e6ef49c0d320
6
+ metadata.gz: 9a6c7d5d9c02a929e6d4304270fd2c4138ae327bc977d089f857b5b2f43493bd5786a3b64d72564252e80cf15d25548f54427bfbb9ee41b6074b1c1fa538deda
7
+ data.tar.gz: f77ac90250d835bdfba156867ad14e118fd7b3ee806a5f805505b79e2d42ce023a92a505a0925acdc9b056ef16cbbe12c516db245eac32e461371dba1f408c93
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.2.3
1
+ 2.3.0
data/.travis.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  language: ruby
2
2
  install: bundle install --jobs=3 --retry=3
3
3
  rvm:
4
+ - 2.3.0
4
5
  - 2.2.4
5
6
  - 2.1.8
6
7
  - 2.0.0-p648
@@ -8,7 +9,14 @@ gemfile:
8
9
  - Gemfile
9
10
  - ar41.gemfile
10
11
  - ar416.gemfile
12
+ - ar50.gemfile
11
13
  services:
12
14
  - mysql
13
15
  script:
14
16
  - bundle exec rake spec
17
+ matrix:
18
+ exclude:
19
+ - rvm: 2.1.8
20
+ gemfile: ar50.gemfile
21
+ - rvm: 2.0.0-p648
22
+ gemfile: ar50.gemfile
data/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.3.0](https://github.com/hirocaster/activerecord-sharding/tree/v0.3.0) (2016-02-03)
4
+ [Full Changelog](https://github.com/hirocaster/activerecord-sharding/compare/v0.2.0...v0.3.0)
5
+
6
+ **Merged pull requests:**
7
+
8
+ - Add parallel query to all shards [\#20](https://github.com/hirocaster/activerecord-sharding/pull/20) ([hirocaster](https://github.com/hirocaster))
9
+
10
+ ## [v0.2.0](https://github.com/hirocaster/activerecord-sharding/tree/v0.2.0) (2016-01-15)
11
+ [Full Changelog](https://github.com/hirocaster/activerecord-sharding/compare/v0.1.0...v0.2.0)
12
+
13
+ **Merged pull requests:**
14
+
15
+ - Add offset error [\#19](https://github.com/hirocaster/activerecord-sharding/pull/19) ([hirocaster](https://github.com/hirocaster))
16
+ - add default args 'offset' at next\_sequence\_id method [\#18](https://github.com/hirocaster/activerecord-sharding/pull/18) ([myoan](https://github.com/myoan))
17
+ - Version up ruby 2.2.4 [\#17](https://github.com/hirocaster/activerecord-sharding/pull/17) ([hirocaster](https://github.com/hirocaster))
18
+ - Add MissingPrimaryKey Error [\#16](https://github.com/hirocaster/activerecord-sharding/pull/16) ([hirocaster](https://github.com/hirocaster))
19
+ - Out put sequencer class name to log [\#15](https://github.com/hirocaster/activerecord-sharding/pull/15) ([hirocaster](https://github.com/hirocaster))
20
+ - Add transaction spec [\#14](https://github.com/hirocaster/activerecord-sharding/pull/14) ([hirocaster](https://github.com/hirocaster))
21
+ - Put transaction block [\#13](https://github.com/hirocaster/activerecord-sharding/pull/13) ([hirocaster](https://github.com/hirocaster))
22
+ - Add count\_up\_sequence\_id method [\#12](https://github.com/hirocaster/activerecord-sharding/pull/12) ([hirocaster](https://github.com/hirocaster))
23
+ - Fix duplicate sequencer record [\#11](https://github.com/hirocaster/activerecord-sharding/pull/11) ([hirocaster](https://github.com/hirocaster))
24
+ - Add multi activerecord version tests [\#9](https://github.com/hirocaster/activerecord-sharding/pull/9) ([hirocaster](https://github.com/hirocaster))
25
+ - Fix coveraills badge [\#8](https://github.com/hirocaster/activerecord-sharding/pull/8) ([hirocaster](https://github.com/hirocaster))
26
+
3
27
  ## [v0.1.0](https://github.com/hirocaster/activerecord-sharding/tree/v0.1.0) (2015-08-27)
4
28
  **Merged pull requests:**
5
29
 
data/ar50.gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activerecord", ">= 5.0.0.beta3"
4
+
5
+ # Specify your gem's dependencies in active_record_sharding.gemspec
6
+ gemspec
@@ -16,12 +16,12 @@ module ActiveRecord
16
16
  @connection_registry[modulo_key]
17
17
  end
18
18
 
19
- def registerd_connection_count
19
+ def registered_connection_count
20
20
  @connection_registry.count
21
21
  end
22
22
 
23
23
  def validate_config!
24
- raise "Nothing registerd connections." if registerd_connection_count == 0
24
+ raise "Nothing registered connections." if registered_connection_count == 0
25
25
  end
26
26
 
27
27
  def connections
@@ -8,5 +8,11 @@ module ActiveRecord
8
8
 
9
9
  class MissingPrimaryKey < Error
10
10
  end
11
+
12
+ class InvalidSequenceId < Error
13
+ end
14
+
15
+ class InvalidPrimaryKey < Error
16
+ end
11
17
  end
12
18
  end
@@ -73,6 +73,7 @@ module ActiveRecord
73
73
 
74
74
  def validate_id!
75
75
  raise ActiveRecord::Sharding::MissingPrimaryKey if attributes[self.class.primary_key].nil?
76
+ raise ActiveRecord::Sharding::InvalidPrimaryKey if attributes[self.class.primary_key].zero?
76
77
  end
77
78
  end
78
79
  end
@@ -6,7 +6,7 @@ module ActiveRecord
6
6
  end
7
7
 
8
8
  def route(id)
9
- modulo_key = id % @cluster_config.registerd_connection_count
9
+ modulo_key = id % @cluster_config.registered_connection_count
10
10
  @cluster_config.fetch modulo_key
11
11
  end
12
12
  end
@@ -32,7 +32,9 @@ module ActiveRecord
32
32
 
33
33
  def next_sequence_id(offset = 1)
34
34
  raise NegativeNumberOffsetError if offset < 1
35
- execute_sql "id +#{offset}"
35
+ sequence_id = execute_sql "id +#{offset}"
36
+ raise ActiveRecord::Sharding::InvalidSequenceId if sequence_id.zero?
37
+ sequence_id
36
38
  end
37
39
 
38
40
  def execute_sql(last_insert_id_args)
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module Sharding
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
5
5
  end
@@ -16,9 +16,9 @@ describe ActiveRecord::Sharding::ClusterConfig do
16
16
  config.register_connection :db_connection_003
17
17
  end
18
18
 
19
- describe '#registerd_connection_count' do
20
- it "returns registerd total connection count" do
21
- expect(config.registerd_connection_count).to eq 3
19
+ describe '#registered_connection_count' do
20
+ it "returns registered total connection count" do
21
+ expect(config.registered_connection_count).to eq 3
22
22
  end
23
23
  end
24
24
 
@@ -34,7 +34,7 @@ describe ActiveRecord::Sharding::ClusterConfig do
34
34
  describe '#validate_config!' do
35
35
  context "Nothing register connection" do
36
36
  it "returns raise" do
37
- expect { config.validate_config! }.to raise_error "Nothing registerd connections."
37
+ expect { config.validate_config! }.to raise_error "Nothing registered connections."
38
38
  end
39
39
  end
40
40
  end
@@ -42,6 +42,10 @@ describe ActiveRecord::Sharding::Model do
42
42
  expect(alice.class.name).to match(/User::ShardFor/)
43
43
  end
44
44
 
45
+ it "raise InvalidPrimaryKey" do
46
+ expect { model.put! id: 0, name: "invalid_id" }.to raise_error ActiveRecord::Sharding::InvalidPrimaryKey
47
+ end
48
+
45
49
  context "in transaction" do
46
50
  it "when rollback" do
47
51
  before_record_count = model.all_shards.map(&:count).reduce(:+)
@@ -10,6 +10,26 @@ describe ActiveRecord::Sharding::Model do
10
10
  end
11
11
  end
12
12
 
13
+ let(:sequencer_args) do
14
+ { sequencer_name: "user" }
15
+ end
16
+
17
+ context "forget insert sequencer record" do
18
+ before do
19
+ ActiveRecord::Sharding::DatabaseTasks.drop_sequencer_database sequencer_args
20
+ ActiveRecord::Sharding::DatabaseTasks.create_sequencer_database sequencer_args
21
+ ActiveRecord::Sharding::DatabaseTasks.create_table_sequencer_database sequencer_args
22
+ end
23
+
24
+ after do
25
+ ActiveRecord::Sharding::DatabaseTasks.insert_initial_record_sequencer_database sequencer_args # forget this in setup
26
+ end
27
+
28
+ it "raise ActiveRecord::Sharding::InvalidSequenceId" do
29
+ expect { model.next_sequence_id }.to raise_error ActiveRecord::Sharding::InvalidSequenceId
30
+ end
31
+ end
32
+
13
33
  describe '#current_sequence_id' do
14
34
  it "returns current sequence id" do
15
35
  current_id = model.current_sequence_id
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-sharding
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - hirocaster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-03 00:00:00.000000000 Z
11
+ date: 2016-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: expeditor
@@ -187,6 +187,7 @@ files:
187
187
  - activerecord-sharding.gemspec
188
188
  - ar41.gemfile
189
189
  - ar416.gemfile
190
+ - ar50.gemfile
190
191
  - bin/benchmark_sequencer.rb
191
192
  - bin/console
192
193
  - bin/setup
@@ -240,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
240
241
  version: '0'
241
242
  requirements: []
242
243
  rubyforge_project:
243
- rubygems_version: 2.4.5.1
244
+ rubygems_version: 2.5.1
244
245
  signing_key:
245
246
  specification_version: 4
246
247
  summary: Sharding library for ActiveRecord(MySQL)