mobility 1.2.9 → 1.3.0.rc1

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