mobility 1.0.0.alpha → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +54 -1
- data/Gemfile +5 -16
- data/Gemfile.lock +30 -82
- data/README.md +24 -29
- data/lib/mobility.rb +67 -9
- data/lib/mobility/backend.rb +8 -10
- data/lib/mobility/backends.rb +1 -1
- data/lib/mobility/backends/active_record.rb +1 -1
- data/lib/mobility/backends/active_record/column.rb +1 -1
- data/lib/mobility/backends/active_record/container.rb +6 -9
- data/lib/mobility/backends/active_record/hstore.rb +4 -4
- data/lib/mobility/backends/active_record/json.rb +3 -3
- data/lib/mobility/backends/active_record/jsonb.rb +3 -3
- data/lib/mobility/backends/active_record/key_value.rb +27 -11
- data/lib/mobility/backends/active_record/serialized.rb +4 -0
- data/lib/mobility/backends/active_record/table.rb +12 -7
- data/lib/mobility/backends/container.rb +10 -2
- data/lib/mobility/backends/hash_valued.rb +4 -0
- data/lib/mobility/backends/jsonb.rb +1 -1
- data/lib/mobility/backends/key_value.rb +12 -15
- data/lib/mobility/backends/sequel.rb +34 -2
- data/lib/mobility/backends/sequel/container.rb +8 -8
- data/lib/mobility/backends/sequel/hstore.rb +1 -1
- data/lib/mobility/backends/sequel/json.rb +1 -0
- data/lib/mobility/backends/sequel/key_value.rb +79 -12
- data/lib/mobility/backends/sequel/pg_hash.rb +6 -6
- data/lib/mobility/backends/sequel/serialized.rb +4 -0
- data/lib/mobility/backends/sequel/table.rb +18 -8
- data/lib/mobility/backends/table.rb +29 -29
- data/lib/mobility/pluggable.rb +21 -1
- data/lib/mobility/plugin.rb +2 -2
- data/lib/mobility/plugins.rb +2 -0
- data/lib/mobility/plugins/active_model/dirty.rb +11 -5
- data/lib/mobility/plugins/active_record.rb +3 -0
- data/lib/mobility/plugins/active_record/backend.rb +2 -0
- data/lib/mobility/plugins/active_record/query.rb +7 -7
- data/lib/mobility/plugins/active_record/uniqueness_validation.rb +5 -1
- data/lib/mobility/plugins/arel.rb +125 -0
- data/lib/mobility/plugins/arel/nodes.rb +15 -0
- data/lib/mobility/plugins/arel/nodes/pg_ops.rb +134 -0
- data/lib/mobility/plugins/attribute_methods.rb +1 -0
- data/lib/mobility/plugins/attributes.rb +17 -15
- data/lib/mobility/plugins/backend.rb +45 -22
- data/lib/mobility/plugins/cache.rb +12 -5
- data/lib/mobility/plugins/default.rb +1 -1
- data/lib/mobility/plugins/fallbacks.rb +4 -4
- data/lib/mobility/plugins/fallthrough_accessors.rb +5 -6
- data/lib/mobility/plugins/locale_accessors.rb +2 -5
- data/lib/mobility/plugins/presence.rb +1 -1
- data/lib/mobility/plugins/reader.rb +2 -2
- data/lib/mobility/plugins/sequel/dirty.rb +2 -2
- data/lib/mobility/plugins/writer.rb +1 -1
- data/lib/mobility/version.rb +2 -2
- data/lib/rails/generators/mobility/templates/create_string_translations.rb +0 -1
- data/lib/rails/generators/mobility/templates/create_text_translations.rb +0 -1
- data/lib/rails/generators/mobility/templates/initializer.rb +11 -3
- metadata +14 -20
- metadata.gz.sig +0 -0
- data/lib/mobility/active_record/model_translation.rb +0 -14
- data/lib/mobility/active_record/string_translation.rb +0 -10
- data/lib/mobility/active_record/text_translation.rb +0 -10
- data/lib/mobility/active_record/translation.rb +0 -14
- data/lib/mobility/arel.rb +0 -49
- data/lib/mobility/arel/nodes.rb +0 -13
- data/lib/mobility/arel/nodes/pg_ops.rb +0 -132
- data/lib/mobility/arel/visitor.rb +0 -61
- data/lib/mobility/sequel/column_changes.rb +0 -28
- data/lib/mobility/sequel/hash_initializer.rb +0 -21
- data/lib/mobility/sequel/model_translation.rb +0 -20
- data/lib/mobility/sequel/sql.rb +0 -16
- data/lib/mobility/sequel/string_translation.rb +0 -10
- data/lib/mobility/sequel/text_translation.rb +0 -10
- data/lib/mobility/sequel/translation.rb +0 -53
@@ -32,8 +32,15 @@ for aggregating attributes.
|
|
32
32
|
end
|
33
33
|
|
34
34
|
included_hook do |klass|
|
35
|
-
|
36
|
-
|
35
|
+
names = @names
|
36
|
+
|
37
|
+
klass.class_eval do
|
38
|
+
extend ClassMethods
|
39
|
+
names.each { |name| mobility_attributes << name.to_s }
|
40
|
+
mobility_attributes.uniq!
|
41
|
+
rescue FrozenError
|
42
|
+
raise FrozenAttributesError, "Attempting to translate these attributes on #{klass}, which has already been subclassed: #{names.join(', ')}."
|
43
|
+
end
|
37
44
|
end
|
38
45
|
|
39
46
|
module ClassMethods
|
@@ -44,25 +51,20 @@ for aggregating attributes.
|
|
44
51
|
mobility_attributes.include?(name.to_s)
|
45
52
|
end
|
46
53
|
|
47
|
-
# Register a new attribute name. Public, but treat as internal.
|
48
|
-
# @param [String, Symbol] Attribute name
|
49
|
-
def register_mobility_attribute(name)
|
50
|
-
(self.mobility_attributes << name.to_s).uniq!
|
51
|
-
end
|
52
|
-
|
53
|
-
def inherited(klass)
|
54
|
-
super
|
55
|
-
mobility_attributes.each { |name| klass.register_mobility_attribute(name) }
|
56
|
-
end
|
57
|
-
|
58
|
-
protected
|
59
|
-
|
60
54
|
# Return translated attribute names on this model.
|
61
55
|
# @return [Array<String>] Attribute names
|
62
56
|
def mobility_attributes
|
63
57
|
@mobility_attributes ||= []
|
64
58
|
end
|
59
|
+
|
60
|
+
def inherited(klass)
|
61
|
+
super
|
62
|
+
attrs = mobility_attributes.freeze # ensure attributes are not modified after being inherited
|
63
|
+
klass.class_eval { @mobility_attributes = attrs.dup }
|
64
|
+
end
|
65
65
|
end
|
66
|
+
|
67
|
+
class FrozenAttributesError < Error; end
|
66
68
|
end
|
67
69
|
|
68
70
|
register_plugin(:attributes, Attributes)
|
@@ -32,18 +32,12 @@ Defines:
|
|
32
32
|
|
33
33
|
def initialize(*args, **original_options)
|
34
34
|
super
|
35
|
-
return unless Plugins::Backend.dependencies_satisfied?(self.class)
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
@backend_options = @backend_options.merge(original_options)
|
43
|
-
when NilClass
|
44
|
-
@backend = @backend_options = nil
|
45
|
-
else
|
46
|
-
raise ArgumentError, "backend must be either a backend name, a backend class, or a two-element array"
|
36
|
+
# Validate that the default backend from config has valid keys
|
37
|
+
if (default = self.class.defaults[:backend])
|
38
|
+
name, backend_options = default
|
39
|
+
extra_keys = backend_options.keys - backend.valid_keys
|
40
|
+
raise InvalidOptionKey, "These are not valid #{name} backend keys: #{extra_keys.join(', ')}." unless extra_keys.empty?
|
47
41
|
end
|
48
42
|
|
49
43
|
include InstanceMethods
|
@@ -58,13 +52,15 @@ Defines:
|
|
58
52
|
klass.extend ClassMethods
|
59
53
|
|
60
54
|
if backend
|
61
|
-
@backend_class =
|
62
|
-
build_subclass(klass, backend_options)
|
55
|
+
@backend_class = backend.build_subclass(klass, backend_options)
|
63
56
|
|
64
57
|
backend_class.setup_model(klass, names)
|
65
58
|
|
66
|
-
|
67
|
-
|
59
|
+
names = @names
|
60
|
+
backend_class = @backend_class
|
61
|
+
|
62
|
+
klass.class_eval do
|
63
|
+
names.each { |name| mobility_backend_classes[name.to_sym] = backend_class }
|
68
64
|
end
|
69
65
|
|
70
66
|
backend_class
|
@@ -83,10 +79,38 @@ Defines:
|
|
83
79
|
raise e, "could not find a #{backend} backend. Did you forget to include an ORM plugin like active_record or sequel?"
|
84
80
|
end
|
85
81
|
|
82
|
+
private
|
83
|
+
|
84
|
+
# Override to extract backend options from options hash.
|
85
|
+
def initialize_options(original_options)
|
86
|
+
super
|
87
|
+
|
88
|
+
case options[:backend]
|
89
|
+
when String, Symbol, Class
|
90
|
+
@backend, @backend_options = options[:backend], options
|
91
|
+
when Array
|
92
|
+
@backend, @backend_options = options[:backend]
|
93
|
+
@backend_options = @backend_options.merge(original_options)
|
94
|
+
when NilClass
|
95
|
+
@backend = @backend_options = nil
|
96
|
+
else
|
97
|
+
raise ArgumentError, "backend must be either a backend name, a backend class, or a two-element array"
|
98
|
+
end
|
99
|
+
|
100
|
+
@backend = load_backend(backend)
|
101
|
+
end
|
102
|
+
|
103
|
+
# Override default validation to exclude backend options, which may be
|
104
|
+
# mixed in with plugin options.
|
105
|
+
def validate_options(options)
|
106
|
+
return super unless backend
|
107
|
+
super(options.slice(*(options.keys - backend.valid_keys)))
|
108
|
+
end
|
109
|
+
|
86
110
|
# Override default argument-handling in DSL to store kwargs passed along
|
87
111
|
# with plugin name.
|
88
|
-
def self.configure_default(defaults, key,
|
89
|
-
defaults[key] = [
|
112
|
+
def self.configure_default(defaults, key, backend = nil, backend_options = {})
|
113
|
+
defaults[key] = [backend, backend_options] if backend
|
90
114
|
end
|
91
115
|
|
92
116
|
module InstanceMethods
|
@@ -116,12 +140,9 @@ Defines:
|
|
116
140
|
raise KeyError, "No backend for: #{name}"
|
117
141
|
end
|
118
142
|
|
119
|
-
def register_mobility_backend_class(name, backend_class)
|
120
|
-
mobility_backend_classes[name.to_sym] = backend_class
|
121
|
-
end
|
122
|
-
|
123
143
|
def inherited(klass)
|
124
|
-
|
144
|
+
parent_classes = mobility_backend_classes.freeze # ensure backend classes are not modified after being inherited
|
145
|
+
klass.class_eval { @mobility_backend_classes = parent_classes.dup }
|
125
146
|
super
|
126
147
|
end
|
127
148
|
|
@@ -131,6 +152,8 @@ Defines:
|
|
131
152
|
@mobility_backend_classes ||= {}
|
132
153
|
end
|
133
154
|
end
|
155
|
+
|
156
|
+
class InvalidOptionKey < Error; end
|
134
157
|
end
|
135
158
|
|
136
159
|
register_plugin(:backend, Backend)
|
@@ -7,8 +7,7 @@ module Mobility
|
|
7
7
|
Caches values fetched from the backend so subsequent fetches can be performed
|
8
8
|
more quickly. The cache stores cached values in a simple hash, which is not
|
9
9
|
optimal for some storage strategies, so some backends (KeyValue, Table) use a
|
10
|
-
custom module
|
11
|
-
details see the documentation for these backends.
|
10
|
+
custom module by defining a method, +include_cache+, on the backend class.
|
12
11
|
|
13
12
|
The cache is reset when one of a set of events happens (saving, reloading,
|
14
13
|
etc.). See {BackendResetter} for details.
|
@@ -28,12 +27,20 @@ Values are added to the cache in two ways:
|
|
28
27
|
# Applies cache plugin to attributes.
|
29
28
|
included_hook do |_, backend_class|
|
30
29
|
if options[:cache]
|
31
|
-
|
30
|
+
if backend_class.respond_to?(:include_cache)
|
31
|
+
backend_class.include_cache
|
32
|
+
else
|
33
|
+
include_cache(backend_class)
|
34
|
+
end
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|
35
38
|
private
|
36
39
|
|
40
|
+
def include_cache(backend_class)
|
41
|
+
backend_class.include BackendMethods
|
42
|
+
end
|
43
|
+
|
37
44
|
# Used in ORM cache plugins
|
38
45
|
def define_cache_hooks(klass, *reset_methods)
|
39
46
|
mod = self
|
@@ -55,11 +62,11 @@ Values are added to the cache in two ways:
|
|
55
62
|
# @!method read(locale, value, options = {})
|
56
63
|
# @option options [Boolean] cache *false* to disable cache.
|
57
64
|
def read(locale, **options)
|
58
|
-
return super(locale, options) if options.delete(:cache) == false
|
65
|
+
return super(locale, **options) if options.delete(:cache) == false
|
59
66
|
if cache.has_key?(locale)
|
60
67
|
cache[locale]
|
61
68
|
else
|
62
|
-
cache[locale] = super(locale, options)
|
69
|
+
cache[locale] = super(locale, **options)
|
63
70
|
end
|
64
71
|
end
|
65
72
|
|
@@ -90,7 +90,7 @@ The proc can accept zero to three arguments (see examples below)
|
|
90
90
|
# *false* to disable presence filter.
|
91
91
|
def read(locale, accessor_options = {})
|
92
92
|
default = accessor_options.has_key?(:default) ? accessor_options.delete(:default) : options[:default]
|
93
|
-
if (value = super(locale, accessor_options)).nil?
|
93
|
+
if (value = super(locale, **accessor_options)).nil?
|
94
94
|
Default[default, locale: locale, accessor_options: accessor_options, model: model, attribute: attribute]
|
95
95
|
else
|
96
96
|
value
|
@@ -47,7 +47,7 @@ the current locale was +nil+.
|
|
47
47
|
Mobility.locale = :ja
|
48
48
|
post.title
|
49
49
|
#=> "foo"
|
50
|
-
|
50
|
+
|
51
51
|
post.title = "bar"
|
52
52
|
post.title
|
53
53
|
#=> "bar"
|
@@ -144,15 +144,15 @@ the current locale was +nil+.
|
|
144
144
|
|
145
145
|
def define_read(fallbacks)
|
146
146
|
define_method :read do |locale, fallback: true, **options|
|
147
|
-
return super(locale, options) if !fallback || options[:locale]
|
147
|
+
return super(locale, **options) if !fallback || options[:locale]
|
148
148
|
|
149
149
|
locales = fallback == true ? fallbacks[locale] : [locale, *fallback]
|
150
150
|
locales.each do |fallback_locale|
|
151
|
-
value = super(fallback_locale, options)
|
151
|
+
value = super(fallback_locale, **options)
|
152
152
|
return value if Util.present?(value)
|
153
153
|
end
|
154
154
|
|
155
|
-
super(locale, options)
|
155
|
+
super(locale, **options)
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
@@ -24,14 +24,11 @@ model class is generated.
|
|
24
24
|
|
25
25
|
default true
|
26
26
|
|
27
|
-
requires :reader
|
28
|
-
requires :writer
|
29
|
-
|
30
27
|
# Apply fallthrough accessors plugin to attributes.
|
31
28
|
# @param [Translations] translations
|
32
29
|
# @param [Boolean] option
|
33
30
|
initialize_hook do
|
34
|
-
if options[:fallthrough_accessors]
|
31
|
+
if options[:fallthrough_accessors]
|
35
32
|
define_fallthrough_accessors(names)
|
36
33
|
end
|
37
34
|
end
|
@@ -47,9 +44,11 @@ model class is generated.
|
|
47
44
|
locale, suffix = $2.split('_')
|
48
45
|
locale = "#{locale}-#{suffix.upcase}" if suffix
|
49
46
|
if $4 == '=' # writer
|
50
|
-
|
47
|
+
kwargs = args[1].is_a?(Hash) ? args[1] : {}
|
48
|
+
public_send(attribute_method, args[0], **kwargs, locale: locale)
|
51
49
|
else # reader
|
52
|
-
|
50
|
+
kwargs = args[0].is_a?(Hash) ? args[0] : {}
|
51
|
+
public_send(attribute_method, **kwargs, locale: locale)
|
53
52
|
end
|
54
53
|
else
|
55
54
|
super(method_name, *args, &block)
|
@@ -19,9 +19,6 @@ available locales for a Rails application) will be used by default.
|
|
19
19
|
|
20
20
|
default true
|
21
21
|
|
22
|
-
requires :reader
|
23
|
-
requires :writer
|
24
|
-
|
25
22
|
# Apply locale accessors plugin to attributes.
|
26
23
|
# @param [Translations] translations
|
27
24
|
# @param [Boolean] option
|
@@ -30,8 +27,8 @@ available locales for a Rails application) will be used by default.
|
|
30
27
|
locales = Mobility.available_locales if locales == true
|
31
28
|
names.each do |name|
|
32
29
|
locales.each do |locale|
|
33
|
-
define_locale_reader(name, locale)
|
34
|
-
define_locale_writer(name, locale)
|
30
|
+
define_locale_reader(name, locale)
|
31
|
+
define_locale_writer(name, locale)
|
35
32
|
end
|
36
33
|
end
|
37
34
|
end
|
@@ -19,13 +19,13 @@ Defines attribute reader that delegates to +Mobility::Backend#read+.
|
|
19
19
|
class_eval <<-EOM, __FILE__, __LINE__ + 1
|
20
20
|
def #{name}(locale: nil, **options)
|
21
21
|
#{Reader.setup_source}
|
22
|
-
mobility_backends[:#{name}].read(locale, options)
|
22
|
+
mobility_backends[:#{name}].read(locale, **options)
|
23
23
|
end
|
24
24
|
EOM
|
25
25
|
class_eval <<-EOM, __FILE__, __LINE__ + 1
|
26
26
|
def #{name}?(locale: nil, **options)
|
27
27
|
#{Reader.setup_source}
|
28
|
-
mobility_backends[:#{name}].present?(locale, options)
|
28
|
+
mobility_backends[:#{name}].present?(locale, **options)
|
29
29
|
end
|
30
30
|
EOM
|
31
31
|
end
|
@@ -51,12 +51,12 @@ Automatically includes dirty plugin in model class when enabled.
|
|
51
51
|
# @!group Backend Accessors
|
52
52
|
# @!macro backend_writer
|
53
53
|
# @param [Hash] options
|
54
|
-
def write(locale, value, options
|
54
|
+
def write(locale, value, **options)
|
55
55
|
locale_accessor = Mobility.normalize_locale_accessor(attribute, locale).to_sym
|
56
56
|
if model.column_changes.has_key?(locale_accessor) && model.initial_values[locale_accessor] == value
|
57
57
|
super
|
58
58
|
[model.changed_columns, model.initial_values].each { |h| h.delete(locale_accessor) }
|
59
|
-
elsif read(locale, options.merge(fallback: false)) != value
|
59
|
+
elsif read(locale, **options.merge(fallback: false)) != value
|
60
60
|
model.will_change_column(locale_accessor)
|
61
61
|
super
|
62
62
|
end
|
@@ -19,7 +19,7 @@ Defines attribute writer that delegates to +Mobility::Backend#write+.
|
|
19
19
|
class_eval <<-EOM, __FILE__, __LINE__ + 1
|
20
20
|
def #{name}=(value, locale: nil, **options)
|
21
21
|
#{Writer.setup_source}
|
22
|
-
mobility_backends[:#{name}].write(locale, value, options)
|
22
|
+
mobility_backends[:#{name}].write(locale, value, **options)
|
23
23
|
end
|
24
24
|
EOM
|
25
25
|
end
|
data/lib/mobility/version.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
Mobility.configure do
|
2
|
-
|
1
|
+
Mobility.configure do
|
3
2
|
# PLUGINS
|
4
|
-
|
3
|
+
plugins do
|
5
4
|
# Backend
|
6
5
|
#
|
7
6
|
# Sets the default backend to use in models. This can be overridden in models
|
@@ -104,5 +103,14 @@ Mobility.configure do |config|
|
|
104
103
|
#
|
105
104
|
# Or define specific defaults by uncommenting line below
|
106
105
|
# locale_accessors [:en, :ja]
|
106
|
+
|
107
|
+
# Attribute Methods
|
108
|
+
#
|
109
|
+
# Adds translated attributes to +attributes+ hash, and defines methods
|
110
|
+
# +translated_attributes+ and +untranslated_attributes+ which return hashes
|
111
|
+
# with translated and untranslated attributes, respectively. Be aware that
|
112
|
+
# this plugin can create conflicts with other gems.
|
113
|
+
#
|
114
|
+
# attribute_methods
|
107
115
|
end
|
108
116
|
end
|
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.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Salzberg
|
@@ -34,7 +34,7 @@ cert_chain:
|
|
34
34
|
gSQml7TqcC6dZRsZRwYqzD9kUwdAJoCqno2CBUKs2l0yQAjFT36lRrVJznb7uWwa
|
35
35
|
xpPFnsrtyaZW6Dty8TSG3qzmeGpmpIotA8x1VA==
|
36
36
|
-----END CERTIFICATE-----
|
37
|
-
date: 2020-
|
37
|
+
date: 2020-12-21 00:00:00.000000000 Z
|
38
38
|
dependencies:
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: request_store
|
@@ -156,14 +156,6 @@ files:
|
|
156
156
|
- README.md
|
157
157
|
- Rakefile
|
158
158
|
- lib/mobility.rb
|
159
|
-
- lib/mobility/active_record/model_translation.rb
|
160
|
-
- lib/mobility/active_record/string_translation.rb
|
161
|
-
- lib/mobility/active_record/text_translation.rb
|
162
|
-
- lib/mobility/active_record/translation.rb
|
163
|
-
- lib/mobility/arel.rb
|
164
|
-
- lib/mobility/arel/nodes.rb
|
165
|
-
- lib/mobility/arel/nodes/pg_ops.rb
|
166
|
-
- lib/mobility/arel/visitor.rb
|
167
159
|
- lib/mobility/backend.rb
|
168
160
|
- lib/mobility/backends.rb
|
169
161
|
- lib/mobility/backends/active_record.rb
|
@@ -209,6 +201,9 @@ files:
|
|
209
201
|
- lib/mobility/plugins/active_record/dirty.rb
|
210
202
|
- lib/mobility/plugins/active_record/query.rb
|
211
203
|
- lib/mobility/plugins/active_record/uniqueness_validation.rb
|
204
|
+
- lib/mobility/plugins/arel.rb
|
205
|
+
- lib/mobility/plugins/arel/nodes.rb
|
206
|
+
- lib/mobility/plugins/arel/nodes/pg_ops.rb
|
212
207
|
- lib/mobility/plugins/attribute_methods.rb
|
213
208
|
- lib/mobility/plugins/attributes.rb
|
214
209
|
- lib/mobility/plugins/backend.rb
|
@@ -228,13 +223,6 @@ files:
|
|
228
223
|
- lib/mobility/plugins/sequel/dirty.rb
|
229
224
|
- lib/mobility/plugins/sequel/query.rb
|
230
225
|
- lib/mobility/plugins/writer.rb
|
231
|
-
- lib/mobility/sequel/column_changes.rb
|
232
|
-
- lib/mobility/sequel/hash_initializer.rb
|
233
|
-
- lib/mobility/sequel/model_translation.rb
|
234
|
-
- lib/mobility/sequel/sql.rb
|
235
|
-
- lib/mobility/sequel/string_translation.rb
|
236
|
-
- lib/mobility/sequel/text_translation.rb
|
237
|
-
- lib/mobility/sequel/translation.rb
|
238
226
|
- lib/mobility/translations.rb
|
239
227
|
- lib/mobility/util.rb
|
240
228
|
- lib/mobility/version.rb
|
@@ -259,7 +247,13 @@ metadata:
|
|
259
247
|
homepage_uri: https://github.com/shioyama/mobility
|
260
248
|
source_code_uri: https://github.com/shioyama/mobility
|
261
249
|
changelog_uri: https://github.com/shioyama/mobility/blob/master/CHANGELOG.md
|
262
|
-
post_install_message:
|
250
|
+
post_install_message: |2
|
251
|
+
|
252
|
+
Warning: Mobility v1.0 includes backwards-incompatible changes (mostly around configuration).
|
253
|
+
|
254
|
+
If you are upgrading from an earlier version, please see:
|
255
|
+
- https://github.com/shioyama/mobility/releases/tag/v1.0.0
|
256
|
+
- https://github.com/shioyama/mobility/wiki/Introduction-to-Mobility-v1.0
|
263
257
|
rdoc_options: []
|
264
258
|
require_paths:
|
265
259
|
- lib
|
@@ -270,9 +264,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
270
264
|
version: '2.5'
|
271
265
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
272
266
|
requirements:
|
273
|
-
- - "
|
267
|
+
- - ">="
|
274
268
|
- !ruby/object:Gem::Version
|
275
|
-
version:
|
269
|
+
version: '0'
|
276
270
|
requirements: []
|
277
271
|
rubygems_version: 3.1.2
|
278
272
|
signing_key:
|