active_delegate 1.0.1 → 1.0.2

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: c99873f9805b6f84c6d036a649e76ec69608b8b5c99d850ea0161e38fb96b542
4
- data.tar.gz: bd53c53b31fec9193cbfb1256e3d30e238dfcd381b4831dade2cc892d2010f3d
3
+ metadata.gz: a0ff0702750360bd4c01ebc4075853ce241921ec038c864e6c3536934adfbcba
4
+ data.tar.gz: 3e18f2b5f05f886b1d5a25e7e2b46cc5fb511ccd90edbff242b543891512359c
5
5
  SHA512:
6
- metadata.gz: 44d3ec0a17ff617a897fa7b0f5a756b34d769700abc0f1cc51f2db7369bd67f2233284f4499f6f2817693ce14da4ea67382f50b2e6b93a99b2ad71618f62ced2
7
- data.tar.gz: 43b4cdae60e193e306ad1054aae8b2d451aaa0916bb1541e1d0c207121d094171d571a2ec653a5e1c11b345bed9318fe0c9bd52f5edd04d4565882bfb45470d3
6
+ metadata.gz: 81f7b9b0b20bca2831c30c1e90ed4789cfcac4501b37816eb4ff6879a78da79875d67f7a9fd90a71c4d5a977a6eec4cfe376424c10e7c04cd4d4b283dca2ddaa
7
+ data.tar.gz: b6bef5e43efab6fa63b8f3f95952fc2e1f3df0cdd2f4af7cefdad6e73e18edddb2b8ebd13d78130bce3b3dfb443e086f23445b48a72fb9c4eb71c9d56e2734dc
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in active_delegate.gemspec
data/Gemfile.lock CHANGED
@@ -1,31 +1,31 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_delegate (0.1.1)
4
+ active_delegate (1.0.1)
5
5
  activerecord (~> 5.0)
6
- i18n (~> 0.8)
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
10
9
  specs:
11
- activemodel (5.1.1)
12
- activesupport (= 5.1.1)
13
- activerecord (5.1.1)
14
- activemodel (= 5.1.1)
15
- activesupport (= 5.1.1)
16
- arel (~> 8.0)
17
- activesupport (5.1.1)
10
+ activemodel (5.2.1)
11
+ activesupport (= 5.2.1)
12
+ activerecord (5.2.1)
13
+ activemodel (= 5.2.1)
14
+ activesupport (= 5.2.1)
15
+ arel (>= 9.0)
16
+ activesupport (5.2.1)
18
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
- i18n (~> 0.7)
18
+ i18n (>= 0.7, < 2)
20
19
  minitest (~> 5.1)
21
20
  tzinfo (~> 1.1)
22
- arel (8.0.0)
21
+ arel (9.0.0)
23
22
  concurrent-ruby (1.0.5)
24
- i18n (0.8.4)
25
- minitest (5.10.2)
23
+ i18n (1.1.0)
24
+ concurrent-ruby (~> 1.0)
25
+ minitest (5.10.3)
26
26
  rake (10.5.0)
27
27
  thread_safe (0.3.6)
28
- tzinfo (1.2.3)
28
+ tzinfo (1.2.5)
29
29
  thread_safe (~> 0.1)
30
30
 
31
31
  PLATFORMS
@@ -38,4 +38,4 @@ DEPENDENCIES
38
38
  rake (~> 10.0)
39
39
 
40
40
  BUNDLED WITH
41
- 1.14.6
41
+ 1.16.6
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rake/testtask'
3
5
 
@@ -1,15 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_record'
2
4
  require 'active_delegate/version'
3
5
 
6
+ # Defines delegation methods and loads modules
4
7
  module ActiveDelegate
5
8
  extend ActiveSupport::Concern
6
9
 
7
- # Autoload modules
8
10
  autoload :Associations, 'active_delegate/associations'
9
11
  autoload :Attributes, 'active_delegate/attributes'
10
12
 
11
13
  class_methods do
12
- # Delegate associations
13
14
  def delegate_associations(*args)
14
15
  options = args.extract_options!
15
16
  options = options.reverse_merge(only: args)
@@ -17,13 +18,11 @@ module ActiveDelegate
17
18
  Associations.new(self, options).call
18
19
  end
19
20
 
20
- # Delegate association
21
21
  def delegate_association(association, options = {})
22
22
  options = options.merge(only: association)
23
23
  Associations.new(self, options).call
24
24
  end
25
25
 
26
- # Delegate attributes
27
26
  def delegate_attributes(*args)
28
27
  options = args.extract_options!
29
28
  options = options.reverse_merge(only: args).except(:cast_type, :alias)
@@ -31,7 +30,6 @@ module ActiveDelegate
31
30
  Attributes.new(self, options).call
32
31
  end
33
32
 
34
- # Delegate attribute
35
33
  def delegate_attribute(attribute, cast_type, options = {})
36
34
  options = options.except(:only, :except)
37
35
  options = options.merge(only: attribute, cast_type: cast_type)
@@ -1,15 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveDelegate
2
4
  module Association
5
+ # Generates association method names
3
6
  class Methods
4
7
  attr_reader :association_name, :association_class
5
8
 
6
- # Initialize association methods
7
9
  def initialize(association_name, association_class)
8
10
  @association_name = association_name
9
11
  @association_class = association_class
10
12
  end
11
13
 
12
- # Get delegatable methods
13
14
  def delegatable
14
15
  delegatable = suffixed + prefixed
15
16
  delegatable & association_class.instance_methods
@@ -17,22 +18,18 @@ module ActiveDelegate
17
18
 
18
19
  private
19
20
 
20
- # Get method prefixes
21
21
  def prefixes
22
22
  ['build_']
23
23
  end
24
24
 
25
- # Get method suffixes
26
25
  def suffixes
27
26
  ['', '=', '_attributes', '_attributes=']
28
27
  end
29
28
 
30
- # Get prefixed methods
31
29
  def prefixed
32
30
  prefixes.map { |s| :"#{s}#{attribute}" }
33
31
  end
34
32
 
35
- # Get suffixed methods
36
33
  def suffixed
37
34
  suffixes.map { |s| :"#{attribute}#{s}" }
38
35
  end
@@ -1,24 +1,23 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_delegate/delegator'
2
4
  require 'active_delegate/association/methods'
3
5
 
4
6
  module ActiveDelegate
7
+ # Delegates associations to an associated model
5
8
  class Associations < Delegator
6
- # Get all associations
7
9
  def association_reflections
8
10
  association_class.reflect_on_all_associations
9
11
  end
10
12
 
11
- # Get singular model association names
12
13
  def association_names
13
14
  association_reflections.map(&:name)
14
15
  end
15
16
 
16
- # Get delegatable associations
17
17
  def delegatable_associations
18
18
  delegation_args(association_names)
19
19
  end
20
20
 
21
- # Delegate associations
22
21
  def call
23
22
  delegatable_associations.each do |association|
24
23
  methods = Association::Methods.new(association, association_class)
@@ -1,87 +1,74 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveDelegate
2
4
  module Attribute
5
+ # Reads, writes and type casts attribute value
3
6
  class Accessor
4
7
  attr_reader :record, :options
5
8
 
6
- # Initialize attribute
7
9
  def initialize(record, options = {})
8
10
  @record = record
9
11
  @options = options
10
12
  end
11
13
 
12
- # Get default value
13
14
  def default_value
14
15
  options[:default]
15
16
  end
16
17
 
17
- # Get association name
18
18
  def association_name
19
19
  options[:association].to_sym
20
20
  end
21
21
 
22
- # Get association attribute name
23
22
  def attribute_name
24
23
  options[:attribute].to_sym
25
24
  end
26
25
 
27
- # Get record attribute type
28
26
  def read_type
29
27
  options[:read_type]
30
28
  end
31
29
 
32
- # Get association attribute type
33
30
  def write_type
34
31
  options[:write_type]
35
32
  end
36
33
 
37
- # Check if should cast value
38
34
  def type_cast?
39
- read_type != write_type
35
+ read_type_caster.type != write_type_caster.type
40
36
  end
41
37
 
42
- # Get associated value
43
38
  def association_record
44
39
  record.send(association_name)
45
40
  end
46
41
 
47
- # Get association attribute value
48
42
  def attribute_value(*args)
49
43
  association_record.try(attribute_name, *args)
50
44
  end
51
45
 
52
- # Get record attribute type caster
53
46
  def read_type_caster
54
47
  lookup_type_caster(read_type)
55
48
  end
56
49
 
57
- # Get association attribute type caster
58
50
  def write_type_caster
59
51
  lookup_type_caster(write_type)
60
52
  end
61
53
 
62
- # Cast value for reading
63
54
  def cast_read_value(value)
64
55
  read_type_caster.cast(value)
65
56
  end
66
57
 
67
- # Cast value for writing
68
58
  def cast_write_value(value)
69
59
  write_type_caster.cast(value)
70
60
  end
71
61
 
72
- # Prepare association attribute value for writing
73
62
  def normalize_value(value)
74
63
  value = cast_read_value(value)
75
64
  cast_write_value(value)
76
65
  end
77
66
 
78
- # Read and cast value
79
67
  def read(*args)
80
68
  value = attribute_value(*args) || default_value
81
69
  type_cast? ? cast_read_value(value) : value
82
70
  end
83
71
 
84
- # Cast and write value
85
72
  def write(value)
86
73
  value = normalize_value(value) if type_cast?
87
74
  association_record.send(:"#{attribute_name}=", value)
@@ -89,7 +76,6 @@ module ActiveDelegate
89
76
 
90
77
  private
91
78
 
92
- # Get type caster class
93
79
  def lookup_type_caster(type_caster)
94
80
  if type_caster.is_a?(Symbol)
95
81
  ActiveRecord::Type.lookup(type_caster)
@@ -1,15 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveDelegate
2
4
  module Attribute
5
+ # Generates localized attributes names
3
6
  class Localize
4
7
  attr_reader :attribute_name, :association_instance
5
8
 
6
- # Initialize attribute methods
7
9
  def initialize(attribute_name, association_class)
8
10
  @attribute_name = attribute_name
9
11
  @association_instance = association_class.new
10
12
  end
11
13
 
12
- # Get localized attributes
13
14
  def attributes
14
15
  localized = suffixes.map { |s| :"#{attribute_name}#{s}" }
15
16
  localized & association_instance.methods
@@ -17,14 +18,12 @@ module ActiveDelegate
17
18
 
18
19
  private
19
20
 
20
- # Get localized method suffixes
21
21
  def suffixes
22
22
  @suffixes ||= I18n.available_locales.map do |locale|
23
23
  "_#{normalize_locale(locale)}"
24
24
  end
25
25
  end
26
26
 
27
- # Normalize locale
28
27
  def normalize_locale(locale)
29
28
  locale.to_s.downcase.sub('-', '_').to_s
30
29
  end
@@ -1,44 +1,47 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveDelegate
2
4
  module Attribute
5
+ # Generates attribute method names
3
6
  class Methods
4
7
  attr_reader :attribute_name, :association_instance
5
8
 
6
- # Initialize attribute methods
7
9
  def initialize(attribute_name, association_class)
8
10
  @attribute_name = attribute_name
9
11
  @association_instance = association_class.new
10
12
  end
11
13
 
12
- # Get accessor methods
13
14
  def accessors
14
15
  suffix_attribute(accessor_suffixes)
15
16
  end
16
17
 
17
- # Get dirty methods for attributes
18
18
  def dirty
19
19
  suffix_attribute(dirty_suffixes)
20
20
  end
21
21
 
22
- # Get delegatable methods
23
22
  def delegatable
24
23
  accessors + dirty
25
24
  end
26
25
 
27
26
  private
28
27
 
29
- # Get accessor method suffixes
30
28
  def accessor_suffixes
31
29
  ['', '=', '?']
32
30
  end
33
31
 
34
- # Get dirty method suffixes
35
- def dirty_suffixes
36
- @dirty_suffixes ||= Class.new do
32
+ def dirty_module
33
+ @dirty_module ||= Class.new do
37
34
  include ::ActiveModel::Dirty
38
- end.attribute_method_matchers.map(&:suffix).select { |m| m =~ /\A_/ }
35
+ end
36
+ end
37
+
38
+ def dirty_suffixes
39
+ @dirty_suffixes ||= begin
40
+ suffixes = dirty_module.attribute_method_matchers.map(&:suffix)
41
+ suffixes.select { |m| m.starts_with?('_') }
42
+ end
39
43
  end
40
44
 
41
- # Generate suffixed array of symbols
42
45
  def suffix_attribute(suffixes)
43
46
  delegatable = suffixes.map { |s| :"#{attribute_name}#{s}" }
44
47
  delegatable & association_instance.methods
@@ -1,105 +1,89 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_delegate/attribute/methods'
2
4
  require 'active_delegate/attribute/localize'
3
5
 
4
6
  module ActiveDelegate
5
7
  module Attribute
8
+ # Calculates attribute methods, aliases and options
6
9
  class Object
7
10
  attr_reader :attribute_name, :association_class, :options
8
11
 
9
- # Initialize attribute methods
10
12
  def initialize(attribute_name, association_class, options = {})
11
13
  @attribute_name = attribute_name
12
14
  @association_class = association_class
13
15
  @options = options
14
16
  end
15
17
 
16
- # Check if should define attribute
17
18
  def define?
18
19
  options[:define] || in_option?(:define)
19
20
  end
20
21
 
21
- # Check if should localize attribute
22
22
  def localize?
23
23
  options[:localized] || in_option?(:localized)
24
24
  end
25
25
 
26
- # Check if should define attribute finders
27
26
  def finder?
28
27
  options[:finder] || in_option?(:finder)
29
28
  end
30
29
 
31
- # Check if should define attribute scopes
32
30
  def scope?
33
31
  options[:scope] || in_option?(:scope)
34
32
  end
35
33
 
36
- # Get attribute prefix
37
34
  def prefix
38
35
  options[:prefix]
39
36
  end
40
37
 
41
- # Get attribute default
42
38
  def default
43
39
  options.fetch :default, association_class.column_defaults[unprefixed.to_s]
44
40
  end
45
41
 
46
- # Get read type or fallback to write type
47
42
  def read_type
48
43
  options.fetch :cast_type, write_type
49
44
  end
50
45
 
51
- # Get write type from associated model
52
46
  def write_type
53
47
  association_class.type_for_attribute(unprefixed.to_s)
54
48
  end
55
49
 
56
- # Get unprefixed attribute
57
50
  def unprefixed
58
51
  remove_prefix(attribute_name)
59
52
  end
60
53
 
61
- # Get prefixed attribute
62
54
  def prefixed
63
55
  add_prefix(attribute_name)
64
56
  end
65
57
 
66
- # Check if attribute is prefixed
67
58
  def prefixed?
68
59
  unprefixed != prefixed
69
60
  end
70
61
 
71
- # Get aliased attribute
72
62
  def aliased
73
63
  options[:alias] || prefixed
74
64
  end
75
65
 
76
- # Check if attribute is aliased
77
66
  def aliased?
78
67
  prefixed != aliased
79
68
  end
80
69
 
81
- # Get method aliases
82
70
  def aliases
83
71
  return {} unless aliased?
84
72
  Hash[delegatable_methods.map { |m| generate_alias(m) }]
85
73
  end
86
74
 
87
- # Get localized attributes
88
75
  def localized
89
76
  @localized ||= Localize.new(unprefixed, association_class).attributes
90
77
  end
91
78
 
92
- # Check if attributes has localized methods
93
79
  def localized?
94
80
  localized.any?
95
81
  end
96
82
 
97
- # Get delegatable attributes
98
83
  def delegatable_attributes
99
84
  @delegatable_attributes ||= [unprefixed, *localized].map { |a| add_prefix(a) }
100
85
  end
101
86
 
102
- # Get delegatable attribute methods
103
87
  def delegatable_methods
104
88
  @delegatable_methods ||= [unprefixed, *localized].flat_map do |method_name|
105
89
  Methods.new(method_name, association_class).delegatable
@@ -108,17 +92,14 @@ module ActiveDelegate
108
92
 
109
93
  private
110
94
 
111
- # Prefix attribute
112
95
  def add_prefix(attr_name)
113
96
  prefix.present? ? :"#{prefix}_#{attr_name}" : attr_name
114
97
  end
115
98
 
116
- # Unprefix attribute
117
99
  def remove_prefix(attr_name)
118
100
  attr_name.to_s.sub("#{prefix}_", '').to_sym
119
101
  end
120
102
 
121
- # Generate alias method
122
103
  def generate_alias(method_name)
123
104
  old_name = method_name.to_s.sub(unprefixed.to_s, prefixed.to_s)
124
105
  new_name = method_name.to_s.sub(unprefixed.to_s, aliased.to_s)
@@ -126,7 +107,6 @@ module ActiveDelegate
126
107
  [new_name.to_sym, old_name.to_sym]
127
108
  end
128
109
 
129
- # Check if attribute is in option
130
110
  def in_option?(key)
131
111
  attribute_name.in? Array(options[key])
132
112
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_delegate/delegator'
2
4
  require 'active_delegate/attribute/object'
3
5
  require 'active_delegate/attribute/accessor'
4
6
 
5
7
  module ActiveDelegate
8
+ # Delegates attributes to an associated model
6
9
  class Attributes < Delegator
7
- # Get default options
8
10
  def default_options
9
11
  {
10
12
  except: [],
@@ -19,18 +21,15 @@ module ActiveDelegate
19
21
  }
20
22
  end
21
23
 
22
- # Get attribute options
23
24
  def attribute_options
24
25
  keys = %i[cast_type default define alias localized finder scope]
25
26
  options.select { |k, _v| k.in? keys }.merge(prefix: delegation_prefix)
26
27
  end
27
28
 
28
- # Get association table
29
29
  def association_table
30
30
  association_class.table_name
31
31
  end
32
32
 
33
- # Default excluded attributes
34
33
  def excluded_attributes
35
34
  excluded = %i[id created_at updated_at]
36
35
 
@@ -43,7 +42,6 @@ module ActiveDelegate
43
42
  excluded
44
43
  end
45
44
 
46
- # Get delegatable attributes
47
45
  def delegatable_attributes
48
46
  attributes = delegation_args(association_class.attribute_names)
49
47
  attributes -= excluded_attributes
@@ -57,7 +55,6 @@ module ActiveDelegate
57
55
  attributes.reject { |a| model.has_attribute?(a.prefixed) }
58
56
  end
59
57
 
60
- # Delegate attributes
61
58
  def call
62
59
  redefine_build_association(association_name)
63
60
 
@@ -72,18 +69,16 @@ module ActiveDelegate
72
69
 
73
70
  private
74
71
 
75
- # Redefine build association method
76
72
  def redefine_build_association(assoc_name)
77
73
  model.class_eval do
78
- class_eval <<-EOM, __FILE__, __LINE__ + 1
74
+ class_eval <<-RUBY, __FILE__, __LINE__ + 1
79
75
  def #{assoc_name}
80
76
  super || send(:build_#{assoc_name})
81
77
  end
82
- EOM
78
+ RUBY
83
79
  end
84
80
  end
85
81
 
86
- # Redefine attribute accessor methods
87
82
  def redefine_attribute_accessors(method_name, attribute)
88
83
  attr_options = {
89
84
  association: association_name,
@@ -102,18 +97,15 @@ module ActiveDelegate
102
97
  end
103
98
  end
104
99
 
105
- # Delegate attribute methods
106
100
  def delegate_methods(methods)
107
101
  model.delegate(*methods, delegation_options)
108
102
  end
109
103
 
110
- # Define model method keeping old values
111
104
  def define_model_method(method, *attributes)
112
105
  attributes = model.try(method).to_a.concat(attributes).uniq
113
106
  model.send(:define_singleton_method, method) { attributes }
114
107
  end
115
108
 
116
- # Store attribute names in model class methods
117
109
  def define_model_class_methods(attribute)
118
110
  method_name = :"#{association_table}_attribute_names"
119
111
  define_model_method(method_name, attribute.prefixed)
@@ -122,11 +114,8 @@ module ActiveDelegate
122
114
  define_model_method(method_name, attribute.prefixed) if attribute.localized?
123
115
  end
124
116
 
125
- # Define delegated attribute methods
126
117
  def define_attribute_methods(attribute)
127
- if attribute.define?
128
- model.attribute(attribute.aliased, attribute.read_type)
129
- end
118
+ model.attribute(attribute.aliased, attribute.read_type) if attribute.define?
130
119
 
131
120
  attribute.delegatable_attributes.each do |method_name|
132
121
  redefine_attribute_accessors(method_name, attribute)
@@ -137,7 +126,6 @@ module ActiveDelegate
137
126
  end
138
127
  end
139
128
 
140
- # Define attribute finder methods
141
129
  def define_attribute_finders(attr_method:, attr_column:, assoc_name:, table_name:)
142
130
  model.send(:define_singleton_method, :"find_by_#{attr_method}") do |value|
143
131
  joins(assoc_name).find_by(table_name => { attr_column => value })
@@ -148,7 +136,6 @@ module ActiveDelegate
148
136
  end
149
137
  end
150
138
 
151
- # Define attribute scope methods
152
139
  def define_attribute_scopes(attr_method:, attr_column:, assoc_name:, table_name:)
153
140
  model.send(:define_singleton_method, :"with_#{attr_method}") do |*args|
154
141
  joins(assoc_name).where(table_name => { attr_column => args })
@@ -159,7 +146,6 @@ module ActiveDelegate
159
146
  end
160
147
  end
161
148
 
162
- # Define attribute finders and scopes
163
149
  def define_attribute_queries(attribute)
164
150
  attr_options = {
165
151
  assoc_name: association_name,
@@ -1,14 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveDelegate
4
+ # Validates delegation target and sets basic options
2
5
  class Delegator
3
6
  attr_reader :model, :options
4
7
 
5
- # Initialize delegator
6
8
  def initialize(model, options)
7
9
  @model = model
8
10
  @options = default_options.merge(options.symbolize_keys)
9
11
  end
10
12
 
11
- # Get default options
12
13
  def default_options
13
14
  {
14
15
  except: [],
@@ -18,12 +19,10 @@ module ActiveDelegate
18
19
  }
19
20
  end
20
21
 
21
- # Get delegation options
22
22
  def delegation_options
23
23
  options.select { |k, _v| k.in? %i[to allow_nil prefix] }
24
24
  end
25
25
 
26
- # Get delegation arguments
27
26
  def delegation_args(available = [])
28
27
  included = Array(options[:only]).map(&:to_sym)
29
28
  excluded = Array(options[:except]).map(&:to_sym)
@@ -34,25 +33,21 @@ module ActiveDelegate
34
33
  available
35
34
  end
36
35
 
37
- # Get delegation prefix
38
36
  def delegation_prefix
39
37
  prefix = options[:prefix]
40
38
  prefix == true ? association_name : prefix
41
39
  end
42
40
 
43
- # Get association name
44
41
  def association_name
45
42
  @options[:to]
46
43
  end
47
44
 
48
- # Get association reflection
49
45
  def association_reflection
50
- reflection = @model.reflect_on_association(association_name)
46
+ reflection = model.reflect_on_association(association_name)
51
47
  return reflection unless reflection.nil?
52
- raise "#{@model.name} don't have the association #{association_name}"
48
+ raise "#{model.name} don't have the association #{association_name}"
53
49
  end
54
50
 
55
- # Get model association class
56
51
  def association_class
57
52
  association_reflection.klass
58
53
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveDelegate
2
- VERSION = '1.0.1'
4
+ VERSION = '1.0.2'
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_delegate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonian Guveli
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-03 00:00:00.000000000 Z
11
+ date: 2018-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord