activerecord-turntable 2.0.0.rc1 → 2.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d2ed24b4fc25e1ec4752797494ce5f7e01aba00
4
- data.tar.gz: e9686336be4cac05c60c3d129d3b94c3d562674c
3
+ metadata.gz: 5ed732d4f5ce27c8ec309d715a01e33bc4e287f2
4
+ data.tar.gz: e026370254d526d21205b9a72cd0a05e8df5d355
5
5
  SHA512:
6
- metadata.gz: 948dc1c9c05cedd33df32a763b79a587ec7e748ef03e96b8b763b7e991716b82f619c2bfbb4e4980136ae507c78dda9e06b733768613ecca2468ce8bd33042f3
7
- data.tar.gz: 887ec36800641c5f632acdc83cc8abcb22f428ee196743e1d64b8b371d93e99fedc776d4c4151b91b57fc8586da80f91692f75c5249a354b076a90060e423f6e
6
+ metadata.gz: 77aa461ca4b2c0ce44589ffb756f8c49cfa263040b435235cfd9afd38d0469086c8a6e33ee2b1d82badbefbede00d640cdae145581f4cae9363eac271ee16cbc
7
+ data.tar.gz: f78bc87da3c3e41717f2a2cbd797a96fd7a07dc12daa274b7b8ff30c03055950f78c0b083b788d107e5744379acafea0cdde7d5f80e2cbe896d8b0c89db0fba5
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ## activerecord-turntable 2.0.0 (not released yet) ##
1
+ ## activerecord-turntable 2.0.0 ##
2
2
 
3
3
  First release for ActiveRecord 4.x
4
4
 
@@ -6,6 +6,7 @@ module ActiveRecord::Turntable
6
6
  included do
7
7
  protected
8
8
 
9
+ # @note override for logging current shard name
9
10
  def log(sql, name = "SQL", binds = [])
10
11
  @instrumenter.instrument(
11
12
  "sql.active_record",
@@ -1,5 +1,6 @@
1
1
  module ActiveRecord::Turntable
2
2
  module ActiveRecordExt
3
+ # activerecord-import extension
3
4
  module ActiverecordImportExt
4
5
  extend ActiveSupport::Concern
5
6
 
@@ -9,6 +10,7 @@ module ActiveRecord::Turntable
9
10
 
10
11
  private
11
12
 
13
+ # @note override for sequencer injection
12
14
  def values_sql_for_columns_and_attributes_with_turntable(columns, array_of_attributes)
13
15
  connection_memo = connection
14
16
  array_of_attributes.map do |arr|
@@ -1,8 +1,9 @@
1
1
  begin
2
2
  require 'acts_as_archive'
3
-
3
+ # acts_as_archive extension
4
4
  class ActsAsArchive
5
5
  class << self
6
+ # @note use the same shard which `from` shard using
6
7
  def move_with_turntable(config, where, merge_options={})
7
8
  if [config[:to], config[:from]].all? { |k| k.try(:turntable_enabled?) }
8
9
  current_shard = config[:from].connection.current_shard.name.to_sym
@@ -20,6 +20,7 @@ module ActiveRecord::Turntable
20
20
 
21
21
  private
22
22
 
23
+ # @note Override to add sharding condition for singular association
23
24
  if ActiveRecord::Turntable.rails41_later?
24
25
  def find_target_with_turntable
25
26
  current_scope = scope
@@ -50,6 +51,7 @@ module ActiveRecord::Turntable
50
51
 
51
52
  private
52
53
 
54
+ # @note Override to add sharding condition for collection association
53
55
  def find_target_with_turntable
54
56
  records =
55
57
  if options[:finder_sql]
@@ -9,6 +9,7 @@ module ActiveRecord::Turntable
9
9
  alias_method_chain :records_for, :turntable
10
10
  end
11
11
 
12
+ # @note Override to add sharding condition on preload
12
13
  def records_for_with_turntable(ids)
13
14
  returning_scope = records_for_without_turntable(ids)
14
15
  if should_use_shard_key?
@@ -9,6 +9,7 @@ module ActiveRecord::Turntable
9
9
 
10
10
  private
11
11
 
12
+ # @note Override not to establish_connection destroy existing connection pool proxy object
12
13
  def pool_for_with_turntable(owner)
13
14
  owner_to_pool.fetch(owner.name) {
14
15
  if ancestor_pool = pool_from_any_process_for(owner)
@@ -1,6 +1,6 @@
1
1
  module ActiveRecord::Turntable::ActiveRecordExt
2
2
  module LockingOptimistic
3
-
3
+ # @note Override to add sharding condition on optimistic locking
4
4
  ::ActiveRecord::Locking::Optimistic.class_eval do
5
5
 
6
6
  ar_version = ActiveRecord::VERSION::STRING
@@ -11,6 +11,7 @@ module ActiveRecord::Turntable
11
11
 
12
12
  protected
13
13
 
14
+ # @note Override to add shard name logging
14
15
  def sql_with_turntable(event)
15
16
  self.class.runtime += event.duration
16
17
  return unless logger.debug?
@@ -1,6 +1,7 @@
1
1
  module ActiveRecord::Turntable::ActiveRecordExt
2
2
  module Persistence
3
3
  ::ActiveRecord::Persistence.class_eval do
4
+ # @note Override to add sharding scope on reloading
4
5
  def reload(options = nil)
5
6
  clear_aggregation_cache
6
7
  clear_association_cache
@@ -26,6 +27,7 @@ module ActiveRecord::Turntable::ActiveRecordExt
26
27
  self
27
28
  end
28
29
 
30
+ # @note Override to add sharding scope on `touch`
29
31
  def touch(name = nil)
30
32
  raise ActiveRecordError, "can not touch on a new record object" unless persisted?
31
33
 
@@ -58,6 +60,7 @@ module ActiveRecord::Turntable::ActiveRecordExt
58
60
 
59
61
  private
60
62
 
63
+ # @note Override to add sharding scope on destroying
61
64
  def relation_for_destroy
62
65
  pk = self.class.primary_key
63
66
  column = self.class.columns_hash[pk]
@@ -74,6 +77,8 @@ module ActiveRecord::Turntable::ActiveRecordExt
74
77
  relation
75
78
  end
76
79
 
80
+
81
+ # @note Override to add sharding scope on updating
77
82
  ar_version = ActiveRecord::VERSION::STRING
78
83
  if ar_version < "4.1"
79
84
  method_name = ar_version =~ /\A4\.0\.[0-5]\z/ ? "update_record" : "_update_record"
@@ -15,6 +15,7 @@ module ActiveRecord::Turntable
15
15
  end
16
16
  end
17
17
 
18
+ # @note Override to add sharding scope on updating
18
19
  def _update_record_with_turntable(values, id, id_was, turntable_scope = nil) # :nodoc:
19
20
  substitutes, binds = substitute_values values
20
21
  condition_scope = @klass.unscoped.where(@klass.arel_table[@klass.primary_key].eq(id_was || id))
@@ -10,6 +10,7 @@ module ActiveRecord::Turntable
10
10
 
11
11
  private
12
12
 
13
+ # @note Override to dump database sequencer method
13
14
  def table_with_turntable(table, stream)
14
15
  columns = @connection.columns(table)
15
16
  begin
@@ -1,6 +1,7 @@
1
1
  module ActiveRecord::Turntable
2
2
  module ActiveRecordExt
3
3
  module Transactions
4
+ # @note Override to start transaction on current shard
4
5
  def with_transaction_returning_status
5
6
  if self.class.turntable_enabled?
6
7
  status = nil
@@ -16,6 +16,9 @@ module ActiveRecord::Turntable
16
16
  end
17
17
 
18
18
  module ClassMethods
19
+ # @param [Symbol] cluster_name cluster name for this class
20
+ # @param [Symbol] shard_key_name shard key attribute name
21
+ # @param [Hash] options
19
22
  def turntable(cluster_name, shard_key_name, options = {})
20
23
  class_attribute :turntable_shard_key,
21
24
  :turntable_cluster, :turntable_cluster_name
@@ -34,6 +37,7 @@ module ActiveRecord::Turntable
34
37
  turntable_define_cluster_methods(cluster_name)
35
38
  end
36
39
 
40
+ #
37
41
  def force_transaction_all_shards!(options={}, &block)
38
42
  force_connect_all_shards!
39
43
  shards = turntable_connections.values
@@ -172,10 +176,12 @@ module ActiveRecord::Turntable
172
176
  self.class.shards_transaction(options, &block)
173
177
  end
174
178
 
179
+ # @return [ActiveRecord::Turntable::Shard] current shard for self
175
180
  def turntable_shard
176
181
  turntable_cluster.shard_for(self.send(turntable_shard_key))
177
182
  end
178
183
 
184
+ # @see ActiveRecord::Turntable::ConnectionProxy#with_shard
179
185
  def with_shard(shard)
180
186
  self.class.connection.with_shard(shard) { yield }
181
187
  end
@@ -111,14 +111,22 @@ module ActiveRecord::Turntable
111
111
  current_shard_entry[object_id] = shard
112
112
  end
113
113
 
114
+ # @return connection of current shard
114
115
  def connection
115
116
  current_shard.connection
116
117
  end
117
118
 
119
+ # @return connection_pool of current shard
118
120
  def connection_pool
119
121
  current_shard.connection_pool
120
122
  end
121
123
 
124
+ # Fix connection to given shard in block
125
+ # @param [ActiveRecord::Base, Symbol, ActiveRecord::Turntable::Shard, Numeric, String] shard which you want to fix
126
+ # @param shard [ActiveRecord::Base] AR Object
127
+ # @param shard [Symbol] shard name symbol that defined in turntable.yml
128
+ # @param shard [ActiveRecord::Turntable::Shard] Shard object
129
+ # @param shard [String, Numeric] Raw sharding id
122
130
  def with_shard(shard)
123
131
  shard = cluster.to_shard(shard)
124
132
 
@@ -142,6 +150,8 @@ module ActiveRecord::Turntable
142
150
  end
143
151
  end
144
152
 
153
+ # Send queries to all shards in this cluster
154
+ # @param [Boolean] continue_on_error when a shard raises error, ignore exception and continue
145
155
  def with_all(continue_on_error = false)
146
156
  @cluster.shards.values.map do |shard|
147
157
  begin
@@ -157,6 +167,8 @@ module ActiveRecord::Turntable
157
167
  end
158
168
  end
159
169
 
170
+ # Send queries to master connection and all shards in this cluster
171
+ # @param [Boolean] continue_on_error when a shard raises error, ignore exception and continue
160
172
  def with_master_and_all(continue_on_error = false)
161
173
  ([@cluster.master] + @cluster.shards.values).map do |shard|
162
174
  begin
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module Turntable
3
- VERSION = "2.0.0.rc1"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-turntable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - gussan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-09 00:00:00.000000000 Z
12
+ date: 2014-11-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -430,9 +430,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
430
430
  version: '0'
431
431
  required_rubygems_version: !ruby/object:Gem::Requirement
432
432
  requirements:
433
- - - ">"
433
+ - - ">="
434
434
  - !ruby/object:Gem::Version
435
- version: 1.3.1
435
+ version: '0'
436
436
  requirements: []
437
437
  rubyforge_project: activerecord-turntable
438
438
  rubygems_version: 2.2.2
@@ -480,3 +480,4 @@ test_files:
480
480
  - spec/spec_helper.rb
481
481
  - spec/support/matchers/be_saved_to.rb
482
482
  - spec/support/turntable_helper.rb
483
+ has_rdoc: