unit_measurements-rails 1.2.0 → 1.3.0

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: 5315caeda4fd8354ecf8f0ee7f50778725827ce96a176f0c5164270a81e08fca
4
- data.tar.gz: d5e6ad2b8f041e6fe0a43cd9f2f52b9339a9383cc99ee124155b8ef18c1dcc43
3
+ metadata.gz: cf20e075bf5db7bd8a33f60eb2e14493aa4ed985defd4a3f49b020498a66ec6b
4
+ data.tar.gz: df3f2e54ed849cab6b0b6e7221e57bc74c11480053136aba222f6f91b3c43410
5
5
  SHA512:
6
- metadata.gz: 4e6a3b59d61493150ff20625a1a800864094e91d2378f7c3a9b12a43fd4319283aadc6d64d893e42566d910095e7bd9b2151b52b14b3f3f9a91c7b011ae60276
7
- data.tar.gz: d3e835f26dbaff425180d40e309dadb8d474001829d80e89998d020d847091e985fcde5f16b8e41937ffd4e4ae8caca71c156d04b680bd1cb527a703592e9cfd
6
+ metadata.gz: 4a59d3f2cd7a3d7f716aa68ba88ff3c19ae29aade038c6aa1258a5eeef77c6fc44634e3c66167b8e9e499865c51b15861f0122e3cb6b226d1414daa8cb18af14
7
+ data.tar.gz: 3c722fab2b67d36ae090aef75a01222e5bbecf937c9a2322c03832a4960e0304975d9a347eef5178ea94cc5ae184f5055f97436e37a5702a1ded9b5cbebd5cc2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## [1.3.0](https://github.com/shivam091/unit_measurements-rails/compare/v1.2.0...v1.3.0) - 2023-11-22
2
+
3
+ ### What's new
4
+
5
+ - Raise `BaseError` if already measured attribute.
6
+ - Added wrapper for defining `density` measured attributes.
7
+ - Added wrapper for defining `temperature` measured attributes.
8
+ - Added wrapper for defining `time` measured attributes.
9
+
10
+ -----------
11
+
1
12
  ## [1.2.0](https://github.com/shivam091/unit_measurements-rails/compare/v1.1.0...v1.2.0) - 2023-11-20
2
13
 
3
14
  ### 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.2.0)
4
+ unit_measurements-rails (1.3.0)
5
5
  activemodel (>= 7)
6
6
  activerecord (>= 7)
7
7
  railties (>= 7)
@@ -60,6 +60,8 @@ module UnitMeasurements
60
60
  options[:unit_group] = unit_group
61
61
 
62
62
  measured_attrs.map(&:to_s).each do |measured_attr|
63
+ raise BaseError, "The field '#{measured_attr}' has already been measured." if measured_attributes.key?(measured_attr)
64
+
63
65
  quantity_attr = options[:quantity_attribute_name]&.to_s || "#{measured_attr}_quantity"
64
66
  unit_attr = options[:unit_attribute_name]&.to_s || "#{measured_attr}_unit"
65
67
 
@@ -2,7 +2,10 @@
2
2
  # -*- frozen_string_literal: true -*-
3
3
  # -*- warn_indent: true -*-
4
4
 
5
+ require_relative "area"
6
+ require_relative "density"
5
7
  require_relative "length"
6
- require_relative "weight"
8
+ require_relative "temperature"
9
+ require_relative "time"
7
10
  require_relative "volume"
8
- require_relative "area"
11
+ require_relative "weight"
@@ -16,7 +16,7 @@ module UnitMeasurements::Rails::ActiveRecord::Area
16
16
  #
17
17
  # This method serves as a wrapper around the +measured+ method and allows easy
18
18
  # definition of area-measured attributes by accepting an array of attribute
19
- # names.
19
+ # names along with their options.
20
20
  #
21
21
  # @param [Array<String|Symbol>] measured_attrs
22
22
  # An array of the names of area-measured attributes.
@@ -0,0 +1,50 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ # The +UnitMeasurements::Rails::ActiveRecord::Density+ module provides a convenient
6
+ # way to define density-measured attributes in +ActiveRecord+ models.
7
+ #
8
+ # It acts as a wrapper for the +measured+ method, simplifying the definition of
9
+ # density-measured attributes without directly invoking the +measured+ method.
10
+ #
11
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
12
+ # @since 1.3.0
13
+ module UnitMeasurements::Rails::ActiveRecord::Density
14
+ # @!scope class
15
+ # Defines _density-measured_ attributes in the +ActiveRecord+ model.
16
+ #
17
+ # This method serves as a wrapper around the +measured+ method and allows easy
18
+ # definition of density-measured attributes by accepting an array of attribute
19
+ # names along with their options.
20
+ #
21
+ # @param [Array<String|Symbol>] measured_attrs
22
+ # An array of the names of density-measured attributes.
23
+ # @param [Hash] options A customizable set of options
24
+ # @option options [String|Symbol] :quantity_attribute_name The name of the quantity attribute.
25
+ # @option options [String|Symbol] :unit_attribute_name The name of the unit attribute.
26
+ #
27
+ # @example Define single density-measured attribute:
28
+ # class Substance < ActiveRecord::Base
29
+ # measured_density :total_density
30
+ # end
31
+ #
32
+ # @example Define multiple density-measured attributes:
33
+ # class Substance < ActiveRecord::Base
34
+ # measured_density :internal_density, :external_density
35
+ # end
36
+ #
37
+ # @return [void]
38
+ #
39
+ # @see .measured
40
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
41
+ # @since 1.3.0
42
+ def measured_density(*measured_attrs, **options)
43
+ measured(UnitMeasurements::Density, *measured_attrs, **options)
44
+ end
45
+ end
46
+
47
+ # ActiveSupport hook to extend ActiveRecord with the `UnitMeasurements::Rails::ActiveRecord::Density` module.
48
+ ActiveSupport.on_load(:active_record) do
49
+ ::ActiveRecord::Base.send(:extend, UnitMeasurements::Rails::ActiveRecord::Density)
50
+ end
@@ -16,7 +16,7 @@ module UnitMeasurements::Rails::ActiveRecord::Length
16
16
  #
17
17
  # This method serves as a wrapper around the +measured+ method and allows easy
18
18
  # definition of length-measured attributes by accepting an array of attribute
19
- # names.
19
+ # names along with their options.
20
20
  #
21
21
  # @param [Array<String|Symbol>] measured_attrs
22
22
  # An array of the names of length-measured attributes.
@@ -0,0 +1,50 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ # The +UnitMeasurements::Rails::ActiveRecord::Temperature+ module provides a convenient
6
+ # way to define temperature-measured attributes in +ActiveRecord+ models.
7
+ #
8
+ # It acts as a wrapper for the +measured+ method, simplifying the definition of
9
+ # temperature-measured attributes without directly invoking the +measured+ method.
10
+ #
11
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
12
+ # @since 1.3.0
13
+ module UnitMeasurements::Rails::ActiveRecord::Temperature
14
+ # @!scope class
15
+ # Defines _temperature-measured_ attributes in the +ActiveRecord+ model.
16
+ #
17
+ # This method serves as a wrapper around the +measured+ method and allows easy
18
+ # definition of temperature-measured attributes by accepting an array of attribute
19
+ # names along with their options.
20
+ #
21
+ # @param [Array<String|Symbol>] measured_attrs
22
+ # An array of the names of temperature-measured attributes.
23
+ # @param [Hash] options A customizable set of options
24
+ # @option options [String|Symbol] :quantity_attribute_name The name of the quantity attribute.
25
+ # @option options [String|Symbol] :unit_attribute_name The name of the unit attribute.
26
+ #
27
+ # @example Define single temperature-measured attribute:
28
+ # class WeatherReport < ActiveRecord::Base
29
+ # measured_temperature :average_temperature
30
+ # end
31
+ #
32
+ # @example Define multiple temperature-measured attributes:
33
+ # class WeatherReport < ActiveRecord::Base
34
+ # measured_temperature :day_temperature, :night_temperature
35
+ # end
36
+ #
37
+ # @return [void]
38
+ #
39
+ # @see .measured
40
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
41
+ # @since 1.3.0
42
+ def measured_temperature(*measured_attrs, **options)
43
+ measured(UnitMeasurements::Temperature, *measured_attrs, **options)
44
+ end
45
+ end
46
+
47
+ # ActiveSupport hook to extend ActiveRecord with the `UnitMeasurements::Rails::ActiveRecord::Temperature` module.
48
+ ActiveSupport.on_load(:active_record) do
49
+ ::ActiveRecord::Base.send(:extend, UnitMeasurements::Rails::ActiveRecord::Temperature)
50
+ end
@@ -0,0 +1,50 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ # The +UnitMeasurements::Rails::ActiveRecord::Time+ module provides a convenient
6
+ # way to define time-measured attributes in +ActiveRecord+ models.
7
+ #
8
+ # It acts as a wrapper for the +measured+ method, simplifying the definition of
9
+ # time-measured attributes without directly invoking the +measured+ method.
10
+ #
11
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
12
+ # @since 1.3.0
13
+ module UnitMeasurements::Rails::ActiveRecord::Time
14
+ # @!scope class
15
+ # Defines _time-measured_ attributes in the +ActiveRecord+ model.
16
+ #
17
+ # This method serves as a wrapper around the +measured+ method and allows easy
18
+ # definition of time-measured attributes by accepting an array of attribute
19
+ # names along with their options.
20
+ #
21
+ # @param [Array<String|Symbol>] measured_attrs
22
+ # An array of the names of time-measured attributes.
23
+ # @param [Hash] options A customizable set of options
24
+ # @option options [String|Symbol] :quantity_attribute_name The name of the quantity attribute.
25
+ # @option options [String|Symbol] :unit_attribute_name The name of the unit attribute.
26
+ #
27
+ # @example Define single time-measured attribute:
28
+ # class ProjectTimeline < ActiveRecord::Base
29
+ # measured_time :duration
30
+ # end
31
+ #
32
+ # @example Define multiple time-measured attributes:
33
+ # class ProjectTimeline < ActiveRecord::Base
34
+ # measured_time :setup_time, :processing_time
35
+ # end
36
+ #
37
+ # @return [void]
38
+ #
39
+ # @see .measured
40
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
41
+ # @since 1.3.0
42
+ def measured_time(*measured_attrs, **options)
43
+ measured(UnitMeasurements::Time, *measured_attrs, **options)
44
+ end
45
+ end
46
+
47
+ # ActiveSupport hook to extend ActiveRecord with the `UnitMeasurements::Rails::ActiveRecord::Time` module.
48
+ ActiveSupport.on_load(:active_record) do
49
+ ::ActiveRecord::Base.send(:extend, UnitMeasurements::Rails::ActiveRecord::Time)
50
+ end
@@ -16,7 +16,7 @@ module UnitMeasurements::Rails::ActiveRecord::Volume
16
16
  #
17
17
  # This method serves as a wrapper around the +measured+ method and allows easy
18
18
  # definition of volume-measured attributes by accepting an array of attribute
19
- # names.
19
+ # names along with their options.
20
20
  #
21
21
  # @param [Array<String|Symbol>] measured_attrs
22
22
  # An array of the names of volume-measured attributes.
@@ -16,7 +16,7 @@ module UnitMeasurements::Rails::ActiveRecord::Weight
16
16
  #
17
17
  # This method serves as a wrapper around the +measured+ method and allows easy
18
18
  # definition of weight-measured attributes by accepting an array of attribute
19
- # names.
19
+ # names along with their options.
20
20
  #
21
21
  # @param [Array<String|Symbol>] measured_attrs
22
22
  # An array of the names of weight-measured attributes.
@@ -5,6 +5,6 @@
5
5
  module UnitMeasurements
6
6
  module Rails
7
7
  # Current stable version.
8
- VERSION = "1.2.0"
8
+ VERSION = "1.3.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.2.0
4
+ version: 1.3.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-20 00:00:00.000000000 Z
11
+ date: 2023-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -170,7 +170,10 @@ files:
170
170
  - lib/unit_measurements/rails/railtie.rb
171
171
  - lib/unit_measurements/rails/unit_groups/all.rb
172
172
  - lib/unit_measurements/rails/unit_groups/area.rb
173
+ - lib/unit_measurements/rails/unit_groups/density.rb
173
174
  - lib/unit_measurements/rails/unit_groups/length.rb
175
+ - lib/unit_measurements/rails/unit_groups/temperature.rb
176
+ - lib/unit_measurements/rails/unit_groups/time.rb
174
177
  - lib/unit_measurements/rails/unit_groups/volume.rb
175
178
  - lib/unit_measurements/rails/unit_groups/weight.rb
176
179
  - lib/unit_measurements/rails/version.rb