hstore_accessor 0.5.6 → 0.5.7

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: 0e928299cf27b02a28b2befe1c083ae3ccc28d0b
4
- data.tar.gz: ab166cb7bc0ca541efa7b3a32c1a10278e948c2f
3
+ metadata.gz: 2b47e3c21fb0e55a817beb1ee28a8054673d493f
4
+ data.tar.gz: cb8ed732ecb17fcfbf59019a979ec31bf66a2b5d
5
5
  SHA512:
6
- metadata.gz: 8561b5b3348763342973cb9eaef55363cd554f071bb54a81ae8587f8f38341b88a0d94f6f7ea53250df4723688bf2c3af82f34291e55dcf5dda0ab2bc9551f01
7
- data.tar.gz: a2494d775159bb399923d4aa0db058513da29c365e6851538f93765379cd1051caa7a6d286c64a282562ad443a75b2a9a2f824172420b32a182d81a0249753dc
6
+ metadata.gz: bba53b175d4e96b1ddf78df7b1fb72cf2dc41e7c2f723a0e222e1927e0564cdf0678b14ff7ef9a68f6a7d4abe71f50be205b477f31fb85a694e6fac06756024f
7
+ data.tar.gz: 2cf9f0099ade2feb58e73d3bca95ac8731d22f8253127ca3fa5412c8019c9bcea6e67e908514d20e7d72f494f8f5efd279b65675673772a1d51201c01b377b16
@@ -4,6 +4,7 @@ module HstoreAccessor
4
4
  module ClassMethods
5
5
 
6
6
  def hstore_accessor(hstore_attribute, fields)
7
+ field_methods = Module.new
7
8
  fields.each do |key, type|
8
9
 
9
10
  data_type = type
@@ -22,12 +23,12 @@ module HstoreAccessor
22
23
  fields
23
24
  end
24
25
 
25
- define_method("#{key}=") do |value|
26
+ field_methods.send(:define_method, "#{key}=") do |value|
26
27
  send("#{hstore_attribute}=", (send(hstore_attribute) || {}).merge(store_key.to_s => serialize(data_type, TypeHelpers.cast(type, value))))
27
28
  send("#{hstore_attribute}_will_change!")
28
29
  end
29
30
 
30
- define_method(key) do
31
+ field_methods.send(:define_method, key) do
31
32
  value = send(hstore_attribute) && send(hstore_attribute).with_indifferent_access[store_key.to_s]
32
33
  deserialize(data_type, value)
33
34
  end
@@ -66,6 +67,7 @@ module HstoreAccessor
66
67
  end
67
68
  end
68
69
 
70
+ include field_methods
69
71
  end
70
72
 
71
73
  end
@@ -1,3 +1,3 @@
1
1
  module HstoreAccessor
2
- VERSION = "0.5.6"
2
+ VERSION = "0.5.7"
3
3
  end
@@ -429,10 +429,45 @@ describe HstoreAccessor do
429
429
  expect(product.popular).to be_false
430
430
  end
431
431
  end
432
+ end
432
433
 
434
+ context "extended getters and setters" do
435
+ before do
436
+ class Product
437
+ alias_method :set_color, :color=
438
+ alias_method :get_color, :color
433
439
 
434
- end
440
+ def color=(value)
441
+ super(value.upcase)
442
+ end
443
+
444
+ def color
445
+ super.downcase
446
+ end
447
+ end
448
+ end
449
+
450
+ after do
451
+ class Product
452
+ alias_method :color=, :set_color
453
+ alias_method :color, :get_color
454
+ end
455
+ end
456
+
457
+ context "setters" do
458
+ it "can be wrapped" do
459
+ product.color = "red"
460
+ expect(product.options["color"]).to eq("RED")
461
+ end
462
+ end
435
463
 
464
+ context "getters" do
465
+ it "can be wrapped" do
466
+ product.color = "GREEN"
467
+ expect(product.color).to eq("green")
468
+ end
469
+ end
470
+ end
436
471
  end
437
472
 
438
473
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hstore_accessor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Hirn
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-04-02 00:00:00.000000000 Z
13
+ date: 2014-04-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport