unit_measurements-rails 1.0.0 → 1.1.0

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: cddde8ae9d387f5c1710542cc3152c2621aae6b2f6c2622a0f0b993ebe315e55
4
- data.tar.gz: d68ebeb0acb2dc387fec180d750626f27c345f21a6e65b8181e2de23d946a2af
3
+ metadata.gz: 5f1843c7f2b52c98319dc2157d86f1028638fcc375e3104551ea79f2954560a4
4
+ data.tar.gz: 271f1f7c5103ad50e3eddf357cc1456aba6e7219eebeca8768ab7fc5b9bcae9e
5
5
  SHA512:
6
- metadata.gz: 872c3102f9608149bc7d7983a67684bcbcaac6387a32efdefb1aeeb2214510f25ab00c617e97e2d99675c861d4f29abca2ee88e85f77f5d72abc941064e7c298
7
- data.tar.gz: 04b8d2bdd7122990917ffdea05355d2fa7a23e57a91925ddc2b3088745d4a4b5af9042ed45f714d27558894ded5a43196e071f2ca373f5a563e791c97abe45d8
6
+ metadata.gz: c824399cc26f750e0e5981f39f4ea14ef50e2c1cb6d6c8dbfabf402bea3e06248ed4e48a0787ce015b223c9aa8b52949b15c6527db655bbb47c7b0db2da76957
7
+ data.tar.gz: 236a331b4812c7598f997f27203f5b1bfaadd8f0f8a9ac667d2d1e454a8f5f46395eb9dfb7590f81443b0a1ae0b3fe83ead51d5d838eba9de70203f39ede554f
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [1.1.0](https://github.com/shivam091/unit_measurements-rails/compare/v1.0.0...v1.1.0) - 2023-11-16
2
+
3
+ ### What's new
4
+
5
+ - Added ability to define _multiple_ measured attributes at a time.
6
+ - Added wrapper for defining `length` measured attributes.
7
+ - Added wrapper for defining `weight` measured attributes.
8
+ - Added wrapper for defining `volume` measured attributes.
9
+ - Added wrapper for defining `area` measured attributes.
10
+
11
+ -----------
12
+
1
13
  ## [1.0.0](https://github.com/shivam091/unit_measurements-rails/compare/v0.2.0...v1.0.0) - 2023-11-14
2
14
 
3
15
  ### What's new
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- unit_measurements-rails (1.0.0)
4
+ unit_measurements-rails (1.1.0)
5
5
  activemodel (>= 7)
6
6
  activerecord (>= 7)
7
7
  railties (>= 7)
data/README.md CHANGED
@@ -44,42 +44,74 @@ Or otherwise simply install it yourself as:
44
44
  Attribute names are expected to have the `_quantity` and `_unit` suffix, and be `DECIMAL` and `VARCHAR` types, respectively, and defaults values are accepted.
45
45
 
46
46
  ```ruby
47
- class AddHeightToThings < ActiveRecord::Migration[7.0]
47
+ class CreateTableCubes < ActiveRecord::Migration[7.0]
48
48
  def change
49
- add_column :things, :height_quantity, :decimal, precision: 10, scale: 2
50
- add_column :things, :height_unit, :string, limit: 12
49
+ create_table :cubes do |t|
50
+ t.decimal :length_quantity, precision: 10, scale: 2
51
+ t.string :length_unit, limit: 12
52
+ t.decimal :width_quantity, precision: 10, scale: 2
53
+ t.string :width_unit, limit: 12
54
+ t.decimal :height_quantity, precision: 10, scale: 2
55
+ t.string :height_unit, limit: 12
56
+ t.timestamps
57
+ end
51
58
  end
52
59
  end
53
60
  ```
54
61
 
55
- A column can be declared as a measurement with its unit group class:
62
+ A column can be declared as a measured with its unit group class:
56
63
 
57
64
  ```ruby
58
- class Thing < ActiveRecord::Base
65
+ class Cube < ActiveRecord::Base
59
66
  measured UnitMeasurements::Length, :height
60
67
  end
61
68
  ```
62
69
 
63
- This will allow you to access and assign a measurement object:
70
+ This will allow you to access and assign a measured attribute:
64
71
 
65
72
  ```ruby
66
- thing = Thing.new
67
- thing.height = UnitMeasurements::Length.new(5, "ft")
68
- thing.height_quantity
69
- #=> 0.5e1
70
- thing.height_unit
71
- #=> "ft"
72
- thing.height
73
- #=> 5.0 ft
73
+ cube = Cube.new
74
+ cube.height = UnitMeasurements::Length.new(5, "ft")
75
+ cube.height_quantity #=> 0.5e1
76
+ cube.height_unit #=> "ft"
77
+ cube.height #=> 5.0 ft
74
78
  ```
75
79
 
76
- Order of assignment does not matter, and each attribute can be assigned separately and with mass assignment:
80
+ Order of assignment does not matter, and each attribute can be assigned separately
81
+ and with mass assignment:
77
82
 
78
83
  ```ruby
79
84
  params = {height_quantity: "3", height_unit: "ft"}
80
- thing = Thing.new(params)
81
- thing.height
82
- #=> 3.0 ft
85
+ cube = Cube.new(params)
86
+ cube.height #=> 3.0 ft
87
+ ```
88
+
89
+ You can specify multiple measured attributes at a time:
90
+
91
+ ```ruby
92
+ class Land < ActiveRecord::Base
93
+ measured UnitMeasurements::Area, :carpet_area, :buildup_area
94
+ end
95
+ ```
96
+
97
+ There are some simpler methods for predefined types:
98
+
99
+ ```ruby
100
+ class Package < ActiveRecord::Base
101
+ measured_length :size
102
+ measured_weight :item_weight, :package_weight
103
+ measured_area :carpet_area
104
+ measured_volume :total_volume
105
+ end
106
+ ```
107
+
108
+ This will allow you to access and assign a measurement object:
109
+
110
+ ```ruby
111
+ package = Package.new
112
+ package.item_weight = UnitMeasurements::Weight.new(10, "g")
113
+ package.item_weight_unit #=> "g"
114
+ package.item_weight_value #=> 10
83
115
  ```
84
116
 
85
117
  ## Contributing
@@ -5,55 +5,63 @@
5
5
  module UnitMeasurements
6
6
  module Rails
7
7
  # The +UnitMeasurements::Rails::ActiveRecord+ module enhances ActiveRecord
8
- # models by providing a convenient way to handle unit measurements. It allows
9
- # you to define measurement attributes in your models with support for
10
- # specific unit groups.
8
+ # models by providing a convenient way to handle unit measurements. It
9
+ # facilitates defining measurable attributes in models with specific unit
10
+ # group support.
11
11
  #
12
12
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
13
13
  # @since 1.0.0
14
14
  module ActiveRecord
15
- # Defines a reader and writer methods for the measurement attribute in the
16
- # +ActiveRecord+ model.
15
+ # Defines a _reader_ and _writer_ methods for the measured attributes in
16
+ # the +ActiveRecord+ model.
17
17
  #
18
- # @example Defining measured attributes:
19
- # class Thing < ActiveRecord::Base
18
+ # @example Defining single measured attribute:
19
+ # class Cube < ActiveRecord::Base
20
20
  # measured UnitMeasurements::Length, :height
21
21
  # end
22
22
  #
23
+ # @example Defining multiple measured attributes:
24
+ # class Package < ActiveRecord::Base
25
+ # measured UnitMeasurements::Weight, :item_weight, :total_weight
26
+ # end
27
+ #
23
28
  # @param [Class|String] unit_group
24
29
  # The unit group class or its name as a string.
25
- # @param [String|Symbol] measurement_attr
26
- # The name of the measurement attribute.
30
+ # @param [Array<String|Symbol>] measured_attrs
31
+ # An array of the names of measured attributes.
27
32
  # @return [void]
28
33
  #
29
34
  # @raise [BaseError]
30
- # if unit_group is not a subclass of UnitMeasurements::Measurement.
35
+ # If +unit_group+ is not a subclass of +UnitMeasurements::Measurement+.
31
36
  #
32
37
  # @see BaseError
33
38
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
34
39
  # @since 1.0.0
35
- def measured(unit_group, measurement_attr)
40
+ def measured(unit_group, *measured_attrs)
36
41
  unit_group = unit_group.constantize if unit_group.is_a?(String)
37
42
 
38
43
  validate_unit_group!(unit_group)
39
44
 
40
- quantity_attr = "#{measurement_attr}_quantity"
41
- unit_attr = "#{measurement_attr}_unit"
45
+ measured_attrs.map(&:to_s).each do |measured_attr|
46
+ quantity_attr = "#{measured_attr}_quantity"
47
+ unit_attr = "#{measured_attr}_unit"
42
48
 
43
- define_measurement_reader(measurement_attr, quantity_attr, unit_attr, unit_group)
44
- define_measurement_writer(measurement_attr, quantity_attr, unit_attr, unit_group)
45
- redefine_quantity_writer(quantity_attr)
46
- redefine_unit_writer(unit_attr, unit_group)
49
+ define_reader_for_measured_attr(measured_attr, quantity_attr, unit_attr, unit_group)
50
+ define_writer_for_measured_attr(measured_attr, quantity_attr, unit_attr, unit_group)
51
+ redefine_quantity_writer(quantity_attr)
52
+ redefine_unit_writer(unit_attr, unit_group)
53
+ end
47
54
  end
48
55
 
49
56
  private
50
57
 
51
- # Validates whether the +unit_group+ is a subclass of +UnitMeasurements::Measurement+.
58
+ # @private
59
+ # Validates whether +unit_group+ is a subclass of +UnitMeasurements::Measurement+.
52
60
  #
53
61
  # @param [Class] unit_group The unit group class to be validated.
54
62
  #
55
63
  # @raise [BaseError]
56
- # if unit_group is not a subclass of UnitMeasurements::Measurement.
64
+ # if +unit_group+ is not a subclass of +UnitMeasurements::Measurement+.
57
65
  #
58
66
  # @return [void]
59
67
  #
@@ -65,9 +73,10 @@ module UnitMeasurements
65
73
  end
66
74
  end
67
75
 
68
- # Defines the method to read measurement attribute.
76
+ # @private
77
+ # Defines the method to read the measured attribute.
69
78
  #
70
- # @param [String|Symbol] measurement_attr The name of the measurement attribute.
79
+ # @param [String] measured_attr The name of the measured attribute.
71
80
  # @param [String] quantity_attr The name of the quantity attribute.
72
81
  # @param [String] unit_attr The name of the unit attribute.
73
82
  # @param [Class] unit_group The unit group class for the measurement.
@@ -76,8 +85,8 @@ module UnitMeasurements
76
85
  #
77
86
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
78
87
  # @since 1.0.0
79
- def define_measurement_reader(measurement_attr, quantity_attr, unit_attr, unit_group)
80
- define_method(measurement_attr) do
88
+ def define_reader_for_measured_attr(measured_attr, quantity_attr, unit_attr, unit_group)
89
+ define_method(measured_attr) do
81
90
  quantity, unit = public_send(quantity_attr), public_send(unit_attr)
82
91
 
83
92
  begin
@@ -88,9 +97,10 @@ module UnitMeasurements
88
97
  end
89
98
  end
90
99
 
91
- # Defines the method to write measurement attribute.
100
+ # @private
101
+ # Defines the method to write the measured attribute.
92
102
  #
93
- # @param [String|Symbol] measurement_attr The name of the measurement attribute.
103
+ # @param [String] measured_attr The name of the measured attribute.
94
104
  # @param [String] quantity_attr The name of the quantity attribute.
95
105
  # @param [String] unit_attr The name of the unit attribute.
96
106
  # @param [Class] unit_group The unit group class for the measurement.
@@ -99,8 +109,8 @@ module UnitMeasurements
99
109
  #
100
110
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
101
111
  # @since 1.0.0
102
- def define_measurement_writer(measurement_attr, quantity_attr, unit_attr, unit_group)
103
- define_method("#{measurement_attr}=") do |measurement|
112
+ def define_writer_for_measured_attr(measured_attr, quantity_attr, unit_attr, unit_group)
113
+ define_method("#{measured_attr}=") do |measurement|
104
114
  if measurement.is_a?(unit_group)
105
115
  public_send("#{quantity_attr}=", measurement.quantity)
106
116
  public_send("#{unit_attr}=", measurement.unit.name)
@@ -111,7 +121,8 @@ module UnitMeasurements
111
121
  end
112
122
  end
113
123
 
114
- # Redefines the writer method to set quantity attribute.
124
+ # @private
125
+ # Redefines the writer method to set the quantity attribute.
115
126
  #
116
127
  # @param quantity_attr [String] The name of the quantity attribute.
117
128
  #
@@ -129,13 +140,12 @@ module UnitMeasurements
129
140
  quantity.round(scale)
130
141
  else
131
142
  nil
132
- end
133
-
134
- write_attribute(quantity_attr, quantity)
143
+ end.tap { |value| write_attribute(quantity_attr, value) }
135
144
  end
136
145
  end
137
146
 
138
- # Redefines the writer method to set unit attribute.
147
+ # @private
148
+ # Redefines the writer method to set the unit attribute.
139
149
  #
140
150
  # @param unit_attr [String] The name of the unit attribute.
141
151
  # @param unit_group [Class] The unit group class for the measurement.
@@ -154,6 +164,8 @@ module UnitMeasurements
154
164
  end
155
165
  end
156
166
 
167
+ # ActiveSupport hook to extend ActiveRecord with the `UnitMeasurements::Rails::ActiveRecord`
168
+ # module.
157
169
  ActiveSupport.on_load(:active_record) do
158
170
  ::ActiveRecord::Base.send :extend, UnitMeasurements::Rails::ActiveRecord
159
171
  end
@@ -10,18 +10,13 @@ require "active_record"
10
10
  require "active_model"
11
11
  require "active_model/validations"
12
12
 
13
- # The +UnitMeasurements::Rails+ module provides functionality related to handling
14
- # unit measurements within the Rails framework.
15
- #
16
- # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
17
- # @since 0.1.0
18
13
  module UnitMeasurements
19
- # The +Rails+ module within +UnitMeasurements+ is dedicated to integrating
20
- # {unit_measurements}[https://github.com/shivam091/unit_measurements] into
21
- # Ruby on Rails applications.
14
+ # The +UnitMeasurements::Rails+ integrates the
15
+ # {unit_measurements}[https://github.com/shivam091/unit_measurements]
16
+ # gem into Ruby on Rails applications.
22
17
  #
23
- # It includes modules and classes for ActiveRecord support, Railties, and custom
24
- # errors.
18
+ # It integrates +unit_measurements+ into Ruby on Rails applications, encompassing
19
+ # modules and classes for ActiveRecord support, Railties, and custom errors.
25
20
  #
26
21
  # @see ActiveRecord
27
22
  # @see Railtie
@@ -29,7 +24,7 @@ module UnitMeasurements
29
24
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
30
25
  # @since 0.2.0
31
26
  module Rails
32
- # This is the base class for custom errors in the +UnitMeasurements::Rails+
27
+ # This class serves as the base for custom errors within the +UnitMeasurements::Rails+
33
28
  # module.
34
29
  #
35
30
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
@@ -4,12 +4,11 @@
4
4
 
5
5
  module UnitMeasurements
6
6
  module Rails
7
- # The +Railtie+ class for integrating +unit_measurements+ with the +Rails+
8
- # framework.
7
+ # The +Railtie+ class integrates +unit_measurements+ with the Rails framework.
9
8
  #
10
9
  # This Railtie is designed to be automatically loaded by Rails when the
11
- # application starts. It can be used to configure and customize the behavior
12
- # of +unit_measurements+ in a Rails application.
10
+ # application starts. It facilitates configuration and customization of the
11
+ # behavior of +unit_measurements+ within a Rails application.
13
12
  #
14
13
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
15
14
  # @since 0.1.0
@@ -1,3 +1,8 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  # -*- frozen_string_literal: true -*-
3
3
  # -*- warn_indent: true -*-
4
+
5
+ require_relative "length"
6
+ require_relative "weight"
7
+ require_relative "volume"
8
+ require_relative "area"
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ # The +UnitMeasurements::Rails::ActiveRecord::Area+ module provides a convenient
6
+ # way to define area-measured attributes in +ActiveRecord+ models.
7
+ #
8
+ # It acts as a wrapper for the +measured+ method, simplifying the definition of
9
+ # area-measured attributes without directly invoking the +measured+ method.
10
+ #
11
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
12
+ # @since 1.1.0
13
+ module UnitMeasurements::Rails::ActiveRecord::Area
14
+ # Defines _area-measured_ attributes in the +ActiveRecord+ model.
15
+ #
16
+ # This method serves as a wrapper around the +measured+ method and allows easy
17
+ # definition of area-measured attributes by accepting an array of attribute
18
+ # names.
19
+ #
20
+ # @param [Array<String|Symbol>] measured_attrs
21
+ # An array of the names of area-measured attributes.
22
+ #
23
+ # @example Define single area-measured attribute:
24
+ # class Land < ActiveRecord::Base
25
+ # measured_area :total_area
26
+ # end
27
+ #
28
+ # @example Define multiple area-measured attributes:
29
+ # class Land < ActiveRecord::Base
30
+ # measured_area :carpet_area, :buildup_area
31
+ # end
32
+ #
33
+ # @return [void]
34
+ #
35
+ # @see #measured
36
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
37
+ # @since 1.1.0
38
+ def measured_area(*measured_attrs)
39
+ measured(UnitMeasurements::Area, *measured_attrs)
40
+ end
41
+ end
42
+
43
+ # ActiveSupport hook to extend ActiveRecord with the `UnitMeasurements::Rails::ActiveRecord::Area` module.
44
+ ActiveSupport.on_load(:active_record) do
45
+ ::ActiveRecord::Base.send :extend, UnitMeasurements::Rails::ActiveRecord::Area
46
+ end
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ # The +UnitMeasurements::Rails::ActiveRecord::Length+ module provides a convenient
6
+ # way to define length-measured attributes in +ActiveRecord+ models.
7
+ #
8
+ # It acts as a wrapper for the +measured+ method, simplifying the definition of
9
+ # length-measured attributes without directly invoking the +measured+ method.
10
+ #
11
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
12
+ # @since 1.1.0
13
+ module UnitMeasurements::Rails::ActiveRecord::Length
14
+ # Defines _length-measured_ attributes in the +ActiveRecord+ model.
15
+ #
16
+ # This method serves as a wrapper around the +measured+ method and allows easy
17
+ # definition of length-measured attributes by accepting an array of attribute
18
+ # names.
19
+ #
20
+ # @param [Array<String|Symbol>] measured_attrs
21
+ # An array of the names of length-measured attributes.
22
+ #
23
+ # @example Define single length-measured attribute:
24
+ # class Cube < ActiveRecord::Base
25
+ # measured_length :length
26
+ # end
27
+ #
28
+ # @example Define multiple length-measured attributes:
29
+ # class Cube < ActiveRecord::Base
30
+ # measured_length :height, :width
31
+ # end
32
+ #
33
+ # @return [void]
34
+ #
35
+ # @see #measured
36
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
37
+ # @since 1.1.0
38
+ def measured_length(*measured_attrs)
39
+ measured(UnitMeasurements::Length, *measured_attrs)
40
+ end
41
+ end
42
+
43
+ # ActiveSupport hook to extend ActiveRecord with the `UnitMeasurements::Rails::ActiveRecord::Length` module.
44
+ ActiveSupport.on_load(:active_record) do
45
+ ::ActiveRecord::Base.send :extend, UnitMeasurements::Rails::ActiveRecord::Length
46
+ end
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ # The +UnitMeasurements::Rails::ActiveRecord::Volume+ module provides a convenient
6
+ # way to define volume-measured attributes in +ActiveRecord+ models.
7
+ #
8
+ # It acts as a wrapper for the +measured+ method, simplifying the definition of
9
+ # volume-measured attributes without directly invoking the +measured+ method.
10
+ #
11
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
12
+ # @since 1.1.0
13
+ module UnitMeasurements::Rails::ActiveRecord::Volume
14
+ # Defines _volume-measured_ attributes in the +ActiveRecord+ model.
15
+ #
16
+ # This method serves as a wrapper around the +measured+ method and allows easy
17
+ # definition of volume-measured attributes by accepting an array of attribute
18
+ # names.
19
+ #
20
+ # @param [Array<String|Symbol>] measured_attrs
21
+ # An array of the names of volume-measured attributes.
22
+ #
23
+ # @example Define single volume-measured attribute:
24
+ # class Container < ActiveRecord::Base
25
+ # measured_volume :total_volume
26
+ # end
27
+ #
28
+ # @example Define multiple volume-measured attributes:
29
+ # class Container < ActiveRecord::Base
30
+ # measured_volume :internal_volume, :external_volume
31
+ # end
32
+ #
33
+ # @return [void]
34
+ #
35
+ # @see #measured
36
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
37
+ # @since 1.1.0
38
+ def measured_volume(*measured_attrs)
39
+ measured(UnitMeasurements::Volume, *measured_attrs)
40
+ end
41
+ end
42
+
43
+ # ActiveSupport hook to extend ActiveRecord with the `UnitMeasurements::Rails::ActiveRecord::Volume` module.
44
+ ActiveSupport.on_load(:active_record) do
45
+ ::ActiveRecord::Base.send :extend, UnitMeasurements::Rails::ActiveRecord::Volume
46
+ end
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ # The +UnitMeasurements::Rails::ActiveRecord::Weight+ module provides a convenient
6
+ # way to define weight-measured attributes in +ActiveRecord+ models.
7
+ #
8
+ # It acts as a wrapper for the +measured+ method, simplifying the definition of
9
+ # weight-measured attributes without directly invoking the +measured+ method.
10
+ #
11
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
12
+ # @since 1.1.0
13
+ module UnitMeasurements::Rails::ActiveRecord::Weight
14
+ # Defines _weight-measured_ attributes in the +ActiveRecord+ model.
15
+ #
16
+ # This method serves as a wrapper around the +measured+ method and allows easy
17
+ # definition of weight-measured attributes by accepting an array of attribute
18
+ # names.
19
+ #
20
+ # @param [Array<String|Symbol>] measured_attrs
21
+ # An array of the names of weight-measured attributes.
22
+ #
23
+ # @example Define single weight-measured attribute:
24
+ # class Package < ActiveRecord::Base
25
+ # measured_weight :total_weight
26
+ # end
27
+ #
28
+ # @example Define multiple weight-measured attributes:
29
+ # class Package < ActiveRecord::Base
30
+ # measured_weight :item_weight, :package_weight
31
+ # end
32
+ #
33
+ # @return [void]
34
+ #
35
+ # @see #measured
36
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
37
+ # @since 1.1.0
38
+ def measured_weight(*measured_attrs)
39
+ measured(UnitMeasurements::Weight, *measured_attrs)
40
+ end
41
+ end
42
+
43
+ # ActiveSupport hook to extend ActiveRecord with the `UnitMeasurements::Rails::ActiveRecord::Weight` module.
44
+ ActiveSupport.on_load(:active_record) do
45
+ ::ActiveRecord::Base.send :extend, UnitMeasurements::Rails::ActiveRecord::Weight
46
+ end
@@ -5,6 +5,6 @@
5
5
  module UnitMeasurements
6
6
  module Rails
7
7
  # Current stable version.
8
- VERSION = "1.0.0"
8
+ VERSION = "1.1.0"
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unit_measurements-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harshal LADHE
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-14 00:00:00.000000000 Z
11
+ date: 2023-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -169,6 +169,10 @@ files:
169
169
  - lib/unit_measurements/rails/base.rb
170
170
  - lib/unit_measurements/rails/railtie.rb
171
171
  - lib/unit_measurements/rails/unit_groups/all.rb
172
+ - lib/unit_measurements/rails/unit_groups/area.rb
173
+ - lib/unit_measurements/rails/unit_groups/length.rb
174
+ - lib/unit_measurements/rails/unit_groups/volume.rb
175
+ - lib/unit_measurements/rails/unit_groups/weight.rb
172
176
  - lib/unit_measurements/rails/version.rb
173
177
  - unit_measurements-rails.gemspec
174
178
  homepage: https://github.com/shivam091/unit_measurements-rails