mobility 1.2.9 → 1.3.0.rc1

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: 9a2836c1681d1832331e807e58fa61956426ddc3cc730c15e6b3d6ebac2fce40
4
- data.tar.gz: 61c798b73769f7d73bb5a3a97b3a1a27ac8884a186df89aeb5ceef0ecb92b692
3
+ metadata.gz: 8a89e6682c14088be7f337e5a03c5b510a67dd7a93ee88024f3686f9bfc4694e
4
+ data.tar.gz: c5a99fc2000e05d2d3ccc3ff9d6dd00357dc3b5ace57d7c92782b2601bd32e51
5
5
  SHA512:
6
- metadata.gz: e8693fb2b5d997a1d7029413aee5c5f064eeafbef6f8a10ad2c947bd545fff72e238f6d57ebaae8761d5948e036446d310f7ce9da3c047a7577818919dfd7908
7
- data.tar.gz: e980cc7d53a32c517c04994105540fd9635aae5899d35cecb1544a36ef052619adb0647b58ec666902402e8ad642c85aa576f0301d3708211e83b5f3d0e6d95b
6
+ metadata.gz: f60e92ede85fc444d4151a14c833a13ced95c1e2f073fafa024aa967de01810e5b2b6ccfc4365c5d338679d1899573ec2921453ce44dcdc9736fde749ad650ed
7
+ data.tar.gz: 21319dd41e1025a82545a08da30fcafd38d5bc61c86bdcfe2b017b195d670a9a503fbff8101a7897b99fe32e3c0bf19666bd0c86f06887fb697a8bce132b6253
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Mobility Changelog
2
2
 
3
+ ## 1.3
4
+
5
+ ### 1.3.0.rc1
6
+
7
+ This version includes potentially breaking chnages for jsonb and hstore
8
+ backends. See PRs below for details.
9
+
10
+ - Fix ActiveRecord JSONB blank values
11
+ ([#536](https://github.com/shioyama/mobility/pull/536))
12
+ - Support primary keys other then :id on model classes
13
+ ([#542](https://github.com/shioyama/mobility/pull/542))
14
+ - Clean up and refactor container backend
15
+ ([#543](https://github.com/shioyama/mobility/pull/543)),
16
+ thanks [doits](https://github.com/doits)!
17
+ - Update fallthrough_accessor regex to allow for ISO 639-2 codes
18
+ ([#580](https://github.com/shioyama/mobility/pull/580))
19
+ thanks [phil-allcock](https://github.com/phil-allcock)!
20
+
3
21
  ## 1.2
4
22
 
5
23
  ### 1.2.9
@@ -11,7 +29,8 @@
11
29
  - Fix issues with subclassing, such as when using AR STI,
12
30
  fixes [#566](https://github.com/shioyama/mobility/issues/566)
13
31
  ([#568](https://github.com/shioyama/mobility/pull/568))
14
- - Handle attribute_method_matchers rename (part of #560)
32
+ - Handle `attribute_method_matchers` rename (part of
33
+ [#560](https://github.com/shioyama/mobility/pull/560))
15
34
 
16
35
  ### 1.2.7
17
36
  - Do not query same attribute more than once, fixes
data/Gemfile.lock CHANGED
@@ -1,27 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mobility (1.2.8)
4
+ mobility (1.3.0.rc1)
5
5
  i18n (>= 0.6.10, < 2)
6
6
  request_store (~> 1.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activemodel (7.0.3)
12
- activesupport (= 7.0.3)
13
- activerecord (7.0.3)
14
- activemodel (= 7.0.3)
15
- activesupport (= 7.0.3)
16
- activesupport (7.0.3)
17
- concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (>= 1.6, < 2)
19
- minitest (>= 5.1)
20
- tzinfo (~> 2.0)
21
11
  benchmark-ips (2.10.0)
22
12
  byebug (11.1.3)
23
13
  coderay (1.1.3)
24
- concurrent-ruby (1.1.10)
14
+ concurrent-ruby (1.2.2)
25
15
  database_cleaner (1.99.0)
26
16
  diff-lcs (1.5.0)
27
17
  ffi (1.15.5)
@@ -40,26 +30,24 @@ GEM
40
30
  guard (~> 2.1)
41
31
  guard-compat (~> 1.1)
42
32
  rspec (>= 2.99.0, < 4.0)
43
- i18n (1.10.0)
33
+ i18n (1.12.0)
44
34
  concurrent-ruby (~> 1.0)
45
35
  listen (3.7.1)
46
36
  rb-fsevent (~> 0.10, >= 0.10.3)
47
37
  rb-inotify (~> 0.9, >= 0.9.10)
48
38
  lumberjack (1.2.8)
49
39
  method_source (1.0.0)
50
- minitest (5.16.1)
51
40
  nenv (0.3.0)
52
41
  notiffany (0.1.3)
53
42
  nenv (~> 0.1)
54
43
  shellany (~> 0.0)
55
- pg (1.3.5)
56
44
  pry (0.13.1)
57
45
  coderay (~> 1.1)
58
46
  method_source (~> 1.0)
59
47
  pry-byebug (3.9.0)
60
48
  byebug (~> 11.0)
61
49
  pry (~> 0.13.0)
62
- rack (2.2.3.1)
50
+ rack (3.0.7)
63
51
  rake (12.3.3)
64
52
  rb-fsevent (0.11.1)
65
53
  rb-inotify (0.10.1)
@@ -81,8 +69,6 @@ GEM
81
69
  rspec-support (3.11.0)
82
70
  shellany (0.0.1)
83
71
  thor (1.2.1)
84
- tzinfo (2.0.4)
85
- concurrent-ruby (~> 1.0)
86
72
  webrick (1.7.0)
87
73
  yard (0.9.28)
88
74
  webrick (~> 1.7.0)
@@ -91,16 +77,14 @@ PLATFORMS
91
77
  ruby
92
78
 
93
79
  DEPENDENCIES
94
- activerecord (~> 7.0.0)
95
80
  benchmark-ips
96
81
  database_cleaner (~> 1.5, >= 1.5.3)
97
82
  guard-rspec
98
83
  mobility!
99
- pg
100
84
  pry-byebug
101
85
  rake (~> 12, >= 12.2.1)
102
86
  rspec (~> 3.0)
103
87
  yard (~> 0.9.0)
104
88
 
105
89
  BUNDLED WITH
106
- 2.1.4
90
+ 2.4.10
data/README.md CHANGED
@@ -55,7 +55,7 @@ Installation
55
55
  Add this line to your application's Gemfile:
56
56
 
57
57
  ```ruby
58
- gem 'mobility', '~> 1.2.9'
58
+ gem 'mobility', '~> 1.3.0.rc1'
59
59
  ```
60
60
 
61
61
  ### ActiveRecord (Rails)
@@ -22,7 +22,11 @@ Implements the {Mobility::Backends::Container} backend for ActiveRecord models.
22
22
  # @param [Hash] options
23
23
  # @return [String,Integer,Boolean] Value of translation
24
24
  def read(locale, _ = nil)
25
- model_translations(locale)[attribute]
25
+ locale_translations = model_translations(locale)
26
+
27
+ return unless locale_translations
28
+
29
+ locale_translations[attribute.to_s]
26
30
  end
27
31
 
28
32
  # @note Translation may be a string, integer, boolean, hash or array
@@ -33,7 +37,7 @@ Implements the {Mobility::Backends::Container} backend for ActiveRecord models.
33
37
  # @return [String,Integer,Boolean] Updated value
34
38
  def write(locale, value, _ = nil)
35
39
  set_attribute_translation(locale, value)
36
- model_translations(locale)[attribute]
40
+ read(locale)
37
41
  end
38
42
  # @!endgroup
39
43
 
@@ -42,8 +46,7 @@ Implements the {Mobility::Backends::Container} backend for ActiveRecord models.
42
46
  # @option options [Symbol] column_name (:translations) Name of column on which to store translations
43
47
  # @raise [InvalidColumnType] if the type of the container column is not json or jsonb
44
48
  def configure(options)
45
- options[:column_name] ||= :translations
46
- options[:column_name] = options[:column_name].to_sym
49
+ options[:column_name] = options[:column_name]&.to_sym || :translations
47
50
  end
48
51
  # @!endgroup
49
52
 
@@ -78,14 +81,12 @@ Implements the {Mobility::Backends::Container} backend for ActiveRecord models.
78
81
 
79
82
  # @!macro backend_iterator
80
83
  def each_locale
81
- model[column_name].each do |l, v|
82
- yield l.to_sym if v.present?
84
+ model[column_name].each_key do |l|
85
+ yield l.to_sym
83
86
  end
84
87
  end
85
88
 
86
89
  setup do |_attributes, options|
87
- store options[:column_name], coder: Coder
88
-
89
90
  # Fix for duping depth-2 jsonb column in AR < 5.0
90
91
  if ::ActiveRecord::VERSION::STRING < '5.0'
91
92
  column_name = options[:column_name]
@@ -107,32 +108,23 @@ Implements the {Mobility::Backends::Container} backend for ActiveRecord models.
107
108
  private
108
109
 
109
110
  def model_translations(locale)
110
- model[column_name][locale] ||= {}
111
+ model[column_name][locale.to_s]
111
112
  end
112
113
 
113
114
  def set_attribute_translation(locale, value)
114
- translations = model[column_name] || {}
115
- translations[locale.to_s] ||= {}
116
- translations[locale.to_s][attribute] = value
117
- model[column_name] = translations
118
- end
115
+ locale_translations = model_translations(locale)
119
116
 
120
- class Coder
121
- def self.dump(obj)
122
- if obj.is_a? ::Hash
123
- obj.inject({}) do |translations, (locale, value)|
124
- value.each do |k, v|
125
- (translations[locale] ||= {})[k] = v if v.present?
126
- end
127
- translations
128
- end
117
+ if locale_translations
118
+ if value.nil?
119
+ locale_translations.delete(attribute.to_s)
120
+
121
+ # delete empty locale hash if last attribute was just deleted
122
+ model[column_name].delete(locale.to_s) if locale_translations.empty?
129
123
  else
130
- raise ArgumentError, "Attribute is supposed to be a Hash, but was a #{obj.class}. -- #{obj.inspect}"
124
+ locale_translations[attribute.to_s] = value
131
125
  end
132
- end
133
-
134
- def self.load(obj)
135
- obj
126
+ elsif !value.nil?
127
+ model[column_name][locale.to_s] = { attribute.to_s => value }
136
128
  end
137
129
  end
138
130
 
@@ -138,7 +138,7 @@ Implements the {Mobility::Backends::KeyValue} backend for ActiveRecord models.
138
138
  on(t[key_column].eq(key).
139
139
  and(t[:locale].eq(locale).
140
140
  and(t[:"#{belongs_to}_type"].eq(model_class.base_class.name).
141
- and(t[:"#{belongs_to}_id"].eq(m[:id]))))).join_sources)
141
+ and(t[:"#{belongs_to}_id"].eq(m[model_class.primary_key] || m[:id]))))).join_sources)
142
142
  end
143
143
 
144
144
  def already_joined?(relation, name, locale, join_type)
@@ -15,34 +15,25 @@ Internal class used by ActiveRecord backends backed by a Postgres data type
15
15
  include ActiveRecord
16
16
  include HashValued
17
17
 
18
- # @!macro backend_iterator
19
- def each_locale
20
- super { |l| yield l.to_sym }
18
+ def read(locale, _options = nil)
19
+ translations[locale.to_s]
21
20
  end
22
21
 
23
- def translations
24
- model.read_attribute(column_name)
22
+ def write(locale, value, _options = nil)
23
+ if value.nil?
24
+ translations.delete(locale.to_s)
25
+ else
26
+ translations[locale.to_s] = value
27
+ end
25
28
  end
26
29
 
27
- setup do |attributes, options = {}|
28
- attributes.each { |attribute| store (options[:column_affix] % attribute), coder: Coder }
30
+ # @!macro backend_iterator
31
+ def each_locale
32
+ super { |l| yield l.to_sym }
29
33
  end
30
34
 
31
- class Coder
32
- def self.dump(obj)
33
- if obj.is_a? ::Hash
34
- obj.inject({}) do |translations, (locale, value)|
35
- translations[locale] = value unless value.nil?
36
- translations
37
- end
38
- else
39
- raise ArgumentError, "Attribute is supposed to be a Hash, but was a #{obj.class}. -- #{obj.inspect}"
40
- end
41
- end
42
-
43
- def self.load(obj)
44
- obj
45
- end
35
+ def translations
36
+ model[column_name]
46
37
  end
47
38
  end
48
39
  private_constant :PgHash
@@ -145,7 +145,7 @@ columns to that table.
145
145
  m = model_class.arel_table
146
146
  t = model_class.const_get(subclass_name).arel_table.alias(table_alias(locale))
147
147
  relation.joins(m.join(t, join_type).
148
- on(t[foreign_key].eq(m[:id]).
148
+ on(t[foreign_key].eq(m[model_class.primary_key] || m[:id]).
149
149
  and(t[:locale].eq(locale))).join_sources)
150
150
  end
151
151
 
@@ -45,7 +45,7 @@ Defines:
45
45
  klass.extend ClassMethods
46
46
 
47
47
  if backend
48
- @backend_class = backend.build_subclass(klass, backend_options)
48
+ @backend_class = backend.build_subclass(klass, **backend_options)
49
49
 
50
50
  backend_class.setup_model(klass, names)
51
51
 
@@ -36,7 +36,7 @@ model class is generated.
36
36
  private
37
37
 
38
38
  def define_fallthrough_accessors(*names)
39
- method_name_regex = /\A(#{names.join('|')})_([a-z]{2}(_[a-z]{2})?)(=?|\??)\z/.freeze
39
+ method_name_regex = /\A(#{names.join('|')})_([a-z]{2,3}(_[a-z]{2})?)(=?|\??)\z/.freeze
40
40
 
41
41
  define_method :method_missing do |method_name, *args, &block|
42
42
  if method_name =~ method_name_regex
@@ -7,9 +7,9 @@ module Mobility
7
7
 
8
8
  module VERSION
9
9
  MAJOR = 1
10
- MINOR = 2
11
- TINY = 9
12
- PRE = nil
10
+ MINOR = 3
11
+ TINY = 0
12
+ PRE = "rc1"
13
13
 
14
14
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
15
15
  end
@@ -58,6 +58,19 @@ Mobility.configure do
58
58
  # Or uncomment this line to include but disable by default, and only enable
59
59
  # per model by passing +dirty: true+ to +translates+.
60
60
  # dirty false
61
+
62
+ # Column Fallback
63
+ #
64
+ # Uncomment line below to fallback to original column. You can pass
65
+ # +column_fallback: true+ to +translates+ to return original column on
66
+ # default locale, or pass +column_fallback: [:en, :de]+ to +translates+
67
+ # to return original column for those locales or pass
68
+ # +column_fallback: ->(locale) { ... }+ to +translates to evaluate which
69
+ # locales to return original column for.
70
+ # column_fallback
71
+ #
72
+ # Or uncomment this line to enable column fallback with a global default.
73
+ # column_fallback true
61
74
 
62
75
  # Fallbacks
63
76
  #
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobility
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.9
4
+ version: 1.3.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Salzberg
@@ -10,31 +10,32 @@ bindir: exe
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhjaHJp
14
- cy9EQz1kZWppbWF0YS9EQz1jb20wHhcNMjIwMzAyMDMyMTA5WhcNMjMwMzAyMDMy
15
- MTA5WjAjMSEwHwYDVQQDDBhjaHJpcy9EQz1kZWppbWF0YS9EQz1jb20wggGiMA0G
16
- CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDURCKbt5oY0sCp4kYK1u5SLzVHg6Q1
17
- 2LejeQvUGpR3gulWqrq/507XRxE/9FSpLfgo3cGGYio1/gg2Yp7pBI4ZNEz8d2Vg
18
- 6caWLHYtHYF0/jlo177UspEF1bt3lCCmaA/ZyQpvoLi76Jf6VCBjepMqhLjeBSsA
19
- xUqSdgNT8lzduOzdYk/GWf2Trvyz72IN6rY7hSwJ/U4R2DusRNTbKC55iyu0MyqI
20
- Nks33les0xQERucqes1YzSEnpott/GUQ/fFWV1Qx7M1hMnqbQIm493BueR6X95a2
21
- B7/aqY7LUVVmn9p65NMBJhbbP/pbAcLYV0C+y1Jy9NaVQTpWmJXVKBpYwlAzOJOQ
22
- +b/7MBzT5Zzudkq9OlA5rZJB0hFo/Bm38MOCTSTk1/RT+zmoOyb4bx/h400L4ZUt
23
- bRGON33BZ99gPiYdGfd3Pc/7FooteJASjKIO4Hman2ELRIdu6Bq+fIkTdJBcruS/
24
- XL6xoRitCG7CX0IqmMKuLiKA/J0amAikHGsCAwEAAaN3MHUwCQYDVR0TBAIwADAL
25
- BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFMNUGAhS68egZT6DOfJwrfIdCtT/MB0GA1Ud
26
- EQQWMBSBEmNocmlzQGRlamltYXRhLmNvbTAdBgNVHRIEFjAUgRJjaHJpc0BkZWpp
27
- bWF0YS5jb20wDQYJKoZIhvcNAQELBQADggGBAHJPxoU7brN6goci9iclRYUq1Prs
28
- 51E87VRywUDysHpaHJoGRTqRJsQxi5aGZ9pIbiXGj9WJKKnrhiv5cM5fWtAsz564
29
- Ro+Zyx6UVt/2z9rcfYrnXtmC9wh+5/0UqAeoan9RiSd8lscQZ9pEY0E3cmzJRHSU
30
- t8kwB2ipVkFO17mdTVgc3C2ZbWRq80eTzkELDBb+8xO0Cskyh4sGMTOKfHs2RWcJ
31
- 217Qeg0F9w0RcqwnORe5zmPihY9zswCPh0IUaJa1pNY+MLTff9LE/qTl3WVTgrif
32
- HsSSnstQYPSLJ3hSP/cu1aOmdXlJiim//XlDQ9DNp4KWje3UW3DMRdTwjW5wPmUq
33
- VA9Ij7DUPaZzUpy1NZEigf1GshvslOnvN5bgol1YFR46jpfZVlgt0K5XBQVNvp/A
34
- QHgocnSksU5GOM+G2UhjVycbTamd+bCxjWAZTEDZNafFt5CmnfK1D1UTIblR/ci9
35
- fUDdW+GhxhobB8N1mtDRlhELoxLLjx7mSvJ3Wg==
13
+ MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MQ4wDAYDVQQDDAVjaHJp
14
+ czEYMBYGCgmSJomT8ixkARkWCGRlamltYXRhMRMwEQYKCZImiZPyLGQBGRYDY29t
15
+ MB4XDTIzMDMyODA3MTQzNVoXDTI0MDMyNzA3MTQzNVowPzEOMAwGA1UEAwwFY2hy
16
+ aXMxGDAWBgoJkiaJk/IsZAEZFghkZWppbWF0YTETMBEGCgmSJomT8ixkARkWA2Nv
17
+ bTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAJI6uJ3SQZs7gaYR4nFb
18
+ yKG+ZHDMoAvrYHPp5hb3ssueoniFtfV1SOh2QOm3AfdA4XIiUco1NAepYkp+zEIT
19
+ sCUKWkYe8uOwvpdTBrO6JbEfFw0/2ewkCWreN/hfFjOXqZIieJXEHeScrzbU0w/6
20
+ /oa3rsiN91ED1qaQqRU7K9pPuhuOnKrZSzdTDpbwbBn4jK2j2BQ2/yRlX6FObOWa
21
+ 4gpyFpr0jU0rpk38UOiHS9uDN7Zi+uagAulgHHkzfYaNPjCswIdobpzLiT9C0stQ
22
+ EYI4cc51dAhoVR4FYP+J0xXn9t39fZ5+843krkOHOcPJxfT1wXGI/guKoqHETzoV
23
+ Tjc1sIgjWqOyBKAafAOvz1+5lltt2WO3HtBS8/56HUlP6JGt33cQwXqMkCJFo3PO
24
+ on4XH3YFH5Qc9d27RWjAzPZChKT0uiWudVkWxtWBJLCaJPtqrrA/PMWm+G7Vuioo
25
+ m+XtpehDzW18iPY1tIh0gW5dZQ49oD9phdjJyBWwXdQHbQIDAQABo3cwdTAJBgNV
26
+ HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUQfErg7vOK5dNHaiq3mnsnUbr
27
+ 1g4wHQYDVR0RBBYwFIESY2hyaXNAZGVqaW1hdGEuY29tMB0GA1UdEgQWMBSBEmNo
28
+ cmlzQGRlamltYXRhLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAbOb7AfkztyaGZfbc
29
+ aS3UyLCtMAyDqvBL0mG3lNTEpGgqYXA0XH/zWcg5Ehj1dd3zSYwg/4Pj8xZNQZm+
30
+ kgHVMuNww7jO5npdKfO5jpKqBRifk5DFiG0GfI0j3F1TTTmXmqC7EmBGW5tF0pR1
31
+ nStAwt6Gip/6f0pY39iq3xV71tQ9CUA6Mm3UWDTS0sFqQTGGhlOssXUeUebBbINV
32
+ O4iRiOQfNE9kTVNN8cJqnAig8TgBTGuHkIFXnEwI7FHV6AOi5YEdtQVczT+5Flvv
33
+ cLGJnX0OPeuhEDhu0qjpHtITTCULlENZJQ84n9Og3zHHGEqJ693Zs9Q3NUHu9OPX
34
+ UxjefiDKMZyQoluoOqFbQeNF0wUxbZ++hxkg8FEHzCsEDNtFKbf3LdQ8GMkNofml
35
+ QnAXcxRDe1ne9jJyVo8hEgxLTG60CK2v46NPXc8FG6TTrp3GWX7G8HzaU2/Z2WAk
36
+ SQ1li+pvoD9RLbDgJxzXm5YqF799qRUYoP/85TXkGYip7dYM
36
37
  -----END CERTIFICATE-----
37
- date: 2022-06-24 00:00:00.000000000 Z
38
+ date: 2023-03-28 00:00:00.000000000 Z
38
39
  dependencies:
39
40
  - !ruby/object:Gem::Dependency
40
41
  name: request_store
@@ -254,11 +255,11 @@ metadata:
254
255
  rubygems_mfa_required: 'true'
255
256
  post_install_message: |2
256
257
 
257
- Warning: Mobility v1.0 includes backwards-incompatible changes (mostly around configuration).
258
+ Warning: Mobility v1.3.x includes potentially backwards-incompatible changes
259
+ for jsonb/hstore backends.
258
260
 
259
- If you are upgrading from an earlier version, please see:
260
- - https://github.com/shioyama/mobility/releases/tag/v1.0.0
261
- - https://github.com/shioyama/mobility/wiki/Introduction-to-Mobility-v1.0
261
+ Please see:
262
+ - https://github.com/shioyama/mobility/issues/535
262
263
  rdoc_options: []
263
264
  require_paths:
264
265
  - lib
@@ -269,11 +270,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
269
270
  version: '2.5'
270
271
  required_rubygems_version: !ruby/object:Gem::Requirement
271
272
  requirements:
272
- - - ">="
273
+ - - ">"
273
274
  - !ruby/object:Gem::Version
274
- version: '0'
275
+ version: 1.3.1
275
276
  requirements: []
276
- rubygems_version: 3.1.2
277
+ rubygems_version: 3.4.6
277
278
  signing_key:
278
279
  specification_version: 4
279
280
  summary: Pluggable Ruby translation framework
metadata.gz.sig CHANGED
Binary file