coaster 1.4.15 → 1.4.16

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
  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