switchman 4.0.0 → 4.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb5bc75d858d97e55442dfdafcd1826d7040fe1bd4819bc3c2ee6053257a72ab
4
- data.tar.gz: e73beaf3a5987f26e2402078f66c028831afc6924f21546d0ca1cb35f70e0831
3
+ metadata.gz: bd3fc41cd455d5855db84fd49d132dca58c824dbe50e49ea4ab7c4cd0ee24d00
4
+ data.tar.gz: df1df2b43f521a5b5e424165ac167d2de351c4800db6fe50b5d83a78e8e17e16
5
5
  SHA512:
6
- metadata.gz: 273718d8bc773ded149ac5d81509a6d85c6858f17bc7c1a03f3dbdf15bbb96f101fea5842eddf87ba442aabf1f0bffe1a21421da4b9329548b0f40e51de26645
7
- data.tar.gz: 9f81d1963fe213d334aed7377057fe29ecbdb637c6b2b8a33a49d52fcc0f726e1a8e87853a6e1030c8c2b0bbaff51e369d54cf8118f1c512ca0d62bf5684267c
6
+ metadata.gz: 5b721c57764dc47c2da10b027b63fdeed4795c349b2dec36b0d440e98ff0294355a4bbb03d2176f30883de0b842e2f4a47f27ea2fa2f56405594f53d4a278f6c
7
+ data.tar.gz: 2729dfb39b1e3d8e3df84bcf1bd321ac39de73e552d8a6c0f15f48f6b9fdb47611a076f8e11fbcbfeb4fd8097c2e6a49a2eab7d76942af92ed769c03b1b9f7d0
@@ -26,10 +26,10 @@ module Switchman
26
26
  end
27
27
 
28
28
  def define_attribute_methods
29
- super
29
+ result = super
30
30
  # ensure that we're using the sharded attribute method
31
31
  # and not the silly one in AR::AttributeMethods::PrimaryKey
32
- return unless sharded_column?(@primary_key)
32
+ return result unless sharded_column?(@primary_key)
33
33
 
34
34
  class_eval(
35
35
  build_sharded_getter("id",
@@ -41,6 +41,7 @@ module Switchman
41
41
  class_eval(build_sharded_setter("id", @primary_key, "::#{connection_class_for_self.name}"),
42
42
  __FILE__,
43
43
  __LINE__)
44
+ result
44
45
  end
45
46
 
46
47
  protected
@@ -55,14 +56,20 @@ module Switchman
55
56
  end
56
57
 
57
58
  def define_cached_method(owner, name, namespace:, as:, &block)
58
- owner.define_cached_method(name, namespace: namespace, as: as, &block)
59
+ if ::Rails.version < "7.1.4"
60
+ # https://github.com/rails/rails/commit/a2a12fc2e3f4e6d06f81d4c74c88f8e6b3369ee6#diff-5b59ece6d9396b596f06271cec0ea726e3360911383511c49b1a66f454bfc2b6L30
61
+ # These arguments were effectively swapped in Rails 7.1.4, so previous versions need them reversed
62
+ owner.define_cached_method(as, namespace: namespace, as: name, &block)
63
+ else
64
+ owner.define_cached_method(name, namespace: namespace, as: as, &block)
65
+ end
59
66
  end
60
67
 
61
- def define_method_global_attribute(attr_name, owner:)
68
+ def define_method_global_attribute(attr_name, owner:, as: attr_name)
62
69
  if sharded_column?(attr_name)
63
70
  define_cached_method(owner,
64
- "global_#{attr_name}",
65
- as: "sharded_global_#{attr_name}",
71
+ "sharded_global_#{attr_name}",
72
+ as: "global_#{as}",
66
73
  namespace: :switchman) do |batch|
67
74
  batch << <<-RUBY
68
75
  def sharded_global_#{attr_name}
@@ -79,11 +86,11 @@ module Switchman
79
86
  end
80
87
  end
81
88
 
82
- def define_method_local_attribute(attr_name, owner:)
89
+ def define_method_local_attribute(attr_name, owner:, as: attr_name)
83
90
  if sharded_column?(attr_name)
84
91
  define_cached_method(owner,
85
- "local_#{attr_name}",
86
- as: "sharded_local_#{attr_name}",
92
+ "sharded_local_#{attr_name}",
93
+ as: "local_#{as}",
87
94
  namespace: :switchman) do |batch|
88
95
  batch << <<-RUBY
89
96
  def sharded_local_#{attr_name}
@@ -122,21 +129,21 @@ module Switchman
122
129
  end
123
130
  end
124
131
 
125
- def define_method_attribute(attr_name, owner:)
132
+ def define_method_attribute(attr_name, owner:, as: attr_name)
126
133
  if sharded_column?(attr_name)
127
134
  reflection = reflection_for_integer_attribute(attr_name)
128
135
  class_name = connection_class_for_self_code_for_reflection(reflection)
129
136
  safe_class_name = class_name.unpack1("h*")
130
137
  define_cached_method(owner,
131
- attr_name,
132
- as: "sharded_#{safe_class_name}_#{attr_name}",
138
+ "sharded_#{safe_class_name}_#{attr_name}",
139
+ as: as,
133
140
  namespace: :switchman) do |batch|
134
141
  batch << build_sharded_getter("sharded_#{safe_class_name}_#{attr_name}",
135
- "original_#{attr_name}",
142
+ "original_#{as}",
136
143
  class_name)
137
144
  end
138
145
  else
139
- define_cached_method(owner, attr_name, as: "plain_#{attr_name}", namespace: :switchman) do |batch|
146
+ define_cached_method(owner, "plain_#{attr_name}", as: as, namespace: :switchman) do |batch|
140
147
  batch << <<-RUBY
141
148
  def plain_#{attr_name}
142
149
  _read_attribute("#{attr_name}") { |n| missing_attribute(n, caller) }
@@ -169,19 +176,19 @@ module Switchman
169
176
  RUBY
170
177
  end
171
178
 
172
- def define_method_attribute=(attr_name, owner:)
179
+ def define_method_attribute=(attr_name, owner:, as: attr_name)
173
180
  if sharded_column?(attr_name)
174
181
  reflection = reflection_for_integer_attribute(attr_name)
175
182
  class_name = connection_class_for_self_code_for_reflection(reflection)
176
183
  safe_class_name = class_name.unpack1("h*")
177
184
  define_cached_method(owner,
178
- "#{attr_name}=",
179
- as: "sharded_#{safe_class_name}_#{attr_name}=",
185
+ "sharded_#{safe_class_name}_#{attr_name}=",
186
+ as: "#{as}=",
180
187
  namespace: :switchman) do |batch|
181
188
  batch << build_sharded_setter("sharded_#{safe_class_name}_#{attr_name}", attr_name, class_name)
182
189
  end
183
190
  else
184
- define_cached_method(owner, "#{attr_name}=", as: "plain_#{attr_name}=", namespace: :switchman) do |batch|
191
+ define_cached_method(owner, "plain_#{attr_name}=", as: "#{as}=", namespace: :switchman) do |batch|
185
192
  batch << <<-RUBY
186
193
  def plain_#{attr_name}=(new_value)
187
194
  _write_attribute('#{attr_name}', new_value)
@@ -199,11 +206,11 @@ module Switchman
199
206
  RUBY
200
207
  end
201
208
 
202
- def define_method_original_attribute(attr_name, owner:)
209
+ def define_method_original_attribute(attr_name, owner:, as: attr_name)
203
210
  if sharded_column?(attr_name)
204
211
  define_cached_method(owner,
205
- "original_#{attr_name}",
206
- as: "sharded_original_#{attr_name}",
212
+ "sharded_original_#{attr_name}",
213
+ as: "original_#{as}",
207
214
  namespace: :switchman) do |batch|
208
215
  batch << <<-RUBY
209
216
  def sharded_original_#{attr_name}
@@ -216,12 +223,12 @@ module Switchman
216
223
  end
217
224
  end
218
225
 
219
- def define_method_original_attribute=(attr_name, owner:)
226
+ def define_method_original_attribute=(attr_name, owner:, as: attr_name)
220
227
  return unless sharded_column?(attr_name)
221
228
 
222
229
  define_cached_method(owner,
223
- "original_#{attr_name}=",
224
- as: "sharded_original_#{attr_name}=",
230
+ "sharded_original_#{attr_name}=",
231
+ as: "original_#{as}=",
225
232
  namespace: :switchman) do |batch|
226
233
  batch << <<-RUBY
227
234
  def sharded_original_#{attr_name}=(new_value)
@@ -235,8 +242,8 @@ module Switchman
235
242
  return if columns_hash["#{prefix}_#{attr_name}"] || attr_name == "id"
236
243
 
237
244
  define_cached_method(owner,
238
- "#{prefix}_#{attr_name}",
239
- as: "unsharded_#{prefix}_#{attr_name}",
245
+ "unsharded_#{prefix}_#{attr_name}",
246
+ as: "#{prefix}_#{attr_name}",
240
247
  namespace: :switchman) do |batch|
241
248
  batch << <<-RUBY
242
249
  def unsharded_#{prefix}_#{attr_name}
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Switchman
4
- VERSION = "4.0.0"
4
+ VERSION = "4.0.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: switchman
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2025-02-12 00:00:00.000000000 Z
13
+ date: 2025-02-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord