coaster 1.4.15 → 1.4.16

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: '05148ce7220929cde94487a2b368436630b00d84acd3f3d7dbecd8615834f5ce'
4
- data.tar.gz: bb01490b06fd771896beca2e0f3db3c9cf44286e60b733b29598ed3186660cc2
3
+ metadata.gz: d9b06a2cf428c68aaa8d8a990cd3c7a38d33bb2ff6e032d12ee7aeb3e3816cd9
4
+ data.tar.gz: 638bf5a8d7a944c671b0b7e10f5308abff516d0b2ed98ac16279201131f394bf
5
5
  SHA512:
6
- metadata.gz: 14739671089cd45b658bc3268e88b73135199b0ba08e2f0d411bc059d2686c0539a13ec4891894fac65edaa7bef3baa9aac902d6119587dc0e128e5b70037777
7
- data.tar.gz: 80dad5a88e45bc18f83b50baf856d47260b75d2aa1efe1cde0f40d289c49d9df53649030053b0a753ccd10a75eae19fab3640ef5d7bdb93728e5f12341bd8c3a
6
+ metadata.gz: a659d1d247a9294ee83e8a31bb7df3ab536bb043a5880dfebafe0dee3680ebc6edab51ea12c6c3894f2a6cc99af15a2e14a103a236326255d739f82f9ec2935c
7
+ data.tar.gz: c2fff3ed081673f46fbb7570f10ef7d080bf2fd35898676d536a373830c38cf8e909e92a73c818226344b6ea0ec8b359987e54f6953ce7444e1e5c692ddc0fe7
@@ -25,16 +25,16 @@ module Coaster
25
25
  cm || key.to_s
26
26
  end
27
27
 
28
- def serialized_property(serialize_column, key, type: nil, comment: nil, getter: nil, setter: nil, setter_callback: nil, default: nil)
28
+ def serialized_property(serialize_column, key, type: nil, comment: nil, getter: nil, setter: nil, setter_callback: nil, default: nil, rescuer: nil)
29
29
  raise DuplicatedProperty, "#{self.name}##{key} duplicated\n#{caller[0..5].join("\n")}" if serialized_property_settings[key.to_sym]
30
- serialized_property_settings[key.to_sym] = {type: type, comment: comment, getter: getter, setter: setter, setter_callback: setter_callback, default: default}
31
- _typed_serialized_property(serialize_column, key, type: type, getter: getter, setter: setter, setter_callback: setter_callback, default: default)
30
+ serialized_property_settings[key.to_sym] = {type: type, comment: comment, getter: getter, setter: setter, setter_callback: setter_callback, default: default, rescuer: rescuer}
31
+ _typed_serialized_property(serialize_column, key, type: type, getter: getter, setter: setter, setter_callback: setter_callback, default: default, rescuer: rescuer)
32
32
  end
33
33
 
34
- def serialized_properties(serialize_column, *keys, type: nil, getter: nil, setter: nil, setter_callback: nil, default: nil)
34
+ def serialized_properties(serialize_column, *keys, type: nil, getter: nil, setter: nil, setter_callback: nil, default: nil, rescuer: nil)
35
35
  keys.flatten.each do |key|
36
36
  key_name = key
37
- prop_hash = {type: type, getter: getter, setter: setter, setter_callback: setter_callback, default: default}
37
+ prop_hash = {type: type, getter: getter, setter: setter, setter_callback: setter_callback, default: default, rescuer: rescuer}
38
38
  if key.is_a? Hash
39
39
  key_name = key[:key]
40
40
  prop_hash = {type: type, getter: getter, setter: setter, setter_callback: setter_callback, default: default}.merge(key)
@@ -46,7 +46,7 @@ module Coaster
46
46
 
47
47
  private
48
48
 
49
- def _typed_serialized_property(serialize_column, key, type: nil, getter: nil, setter: nil, setter_callback: nil, default: nil)
49
+ def _typed_serialized_property(serialize_column, key, type: nil, getter: nil, setter: nil, setter_callback: nil, default: nil, rescuer: nil)
50
50
  case type
51
51
  when String then
52
52
  # String은 나중에 eval해서 가져옴,
@@ -55,14 +55,25 @@ module Coaster
55
55
  if type.is_a?(String)
56
56
  begin
57
57
  type = eval(type)
58
- raise InvalidProperty, "#{self.name}##{key} type string is return string #{type}" if type.is_a?(String)
58
+ raise InvalidProperty, m: "#{self.name}##{key} type string is return string #{type}", type: type if type.is_a?(String)
59
59
  rescue InvalidProperty => e
60
- raise
60
+ if rescuer
61
+ type = rescuer.call(e)
62
+ else
63
+ raise
64
+ end
61
65
  rescue => e
62
- raise InvalidProperty, "#{self.name}##{key} eval failed: type:[#{type}] [#{e.class.name}] #{e.message}"
66
+ e.attributes[:type] = type
67
+ if rescuer
68
+ type = rescuer.call(e)
69
+ else
70
+ raise InvalidProperty, "#{self.name}##{key} eval failed: type:[#{type}] [#{e.class.name}] #{e.message}"
71
+ end
72
+ end
73
+ if type
74
+ serialized_property_setting(key.to_sym)[:type] = type
75
+ _typed_serialized_property serialize_column, key, type: type, getter: getter, setter: setter, setter_callback: setter_callback, default: default
63
76
  end
64
- serialized_property_setting(key.to_sym)[:type] = type
65
- _typed_serialized_property serialize_column, key, type: type, getter: getter, setter: setter, setter_callback: setter_callback, default: default
66
77
  end
67
78
  }
68
79
  when Array then
@@ -1,3 +1,3 @@
1
1
  module Coaster
2
- VERSION = '1.4.15'
2
+ VERSION = '1.4.16'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.15
4
+ version: 1.4.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - buzz jung
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-25 00:00:00.000000000 Z
11
+ date: 2024-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj