mobility 1.0.0 → 1.0.5
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 +3 -2
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +49 -7
- data/Gemfile +5 -16
- data/Gemfile.lock +5 -5
- data/README.md +3 -6
- data/lib/mobility.rb +1 -1
- data/lib/mobility/backends/active_record/table.rb +6 -0
- data/lib/mobility/plugin.rb +2 -2
- data/lib/mobility/plugins/active_record/query.rb +5 -5
- data/lib/mobility/plugins/backend.rb +9 -8
- data/lib/mobility/version.rb +1 -1
- data/lib/rails/generators/mobility/templates/initializer.rb +1 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64a3453a8f28396a24b95987a4df6fb0fabfd3d90b03fccc47f6b82d72e77d8d
|
4
|
+
data.tar.gz: 81ebec57acc6a48596d826716b37239549c01b68db59572d8bf6224b0d276831
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63c3046ddce27b50708b73d78119b79b2e554bee7b92f8db843a3ea275acb91694da9c88c473e11c4ad07147bb7d9448229f44d7eb581f8d433313b7e6ecc34a
|
7
|
+
data.tar.gz: 56ea4ab41a4984e54c5cb3ccf75fa13f42a4afbb3248463e65235fcdf879100bef6cdf34a29a482e5e790bb043bddf0dc6cb398a5fe24682a886882c6ace1bbb
|
checksums.yaml.gz.sig
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
|�sx8qQ�/Ρ��w�ҭ|AHr<�R�n�P���j��˓)��fD Ť\A"���'��2)��9�l�h�=���GK�X4v3���]M���_x���6�mׯ\.r�}Q��is����x�-������+^�xzF0����
|
2
|
+
C��b��ɍ%�fe�I
|
3
|
+
cl��E�&��t,�A�t����"��֡b��#S�����4ɇS'����5#�l�cIm�fvӽ=����n�L�-Ȓ
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,31 +1,73 @@
|
|
1
1
|
# Mobility Changelog
|
2
2
|
|
3
|
+
### Unreleased
|
4
|
+
- Remove `Mobility::Plugins::Attributes#each`
|
5
|
+
([#475](https://github.com/shioyama/mobility/pull/475))
|
6
|
+
- Add public method `Mobility::Plugins::ActiveRecord::Query.build_query`
|
7
|
+
([#471](https://github.com/shioyama/mobility/pull/471))
|
8
|
+
- Allow setting locale per node in query block
|
9
|
+
([#479](https://github.com/shioyama/mobility/pull/479))
|
10
|
+
- Add `Mobility.validate_locale!`
|
11
|
+
([#479](https://github.com/shioyama/mobility/pull/479))
|
12
|
+
- Call after_destroy in setup block to delete associated translations
|
13
|
+
([#487](https://github.com/shioyama/mobility/pull/487))
|
14
|
+
- Add key, value and belongs_to options to key-value backend
|
15
|
+
([#488](https://github.com/shioyama/mobility/pull/488)) thanks
|
16
|
+
[sedubois](https://github.com/sedubois)!
|
17
|
+
|
3
18
|
## 1.0
|
4
19
|
|
5
|
-
1.0 is a rewrite of many internals of the gem. Please see the [wiki page on
|
20
|
+
1.0 is a rewrite of many internals of the gem. Please see the [wiki page on
|
21
|
+
v1.0](https://github.com/shioyama/mobility/wiki/Introduction-to-Mobility-v1.0)
|
22
|
+
for more details on how to upgrade.
|
23
|
+
|
24
|
+
### 1.0.5
|
25
|
+
- Fix duping with AR Table backend, fixes
|
26
|
+
[#490](https://github.com/shioyama/mobility/issues/490)
|
27
|
+
([#499](https://github.com/shioyama/mobility/pull/499) and
|
28
|
+
[#501](https://github.com/shioyama/mobility/pull/501))
|
29
|
+
|
30
|
+
### 1.0.4
|
31
|
+
- Correctly override default backend options, fixes
|
32
|
+
[#492](https://github.com/shioyama/mobility/issues/492)
|
33
|
+
([#495](https://github.com/shioyama/mobility/pull/495))
|
34
|
+
|
35
|
+
### 1.0.3
|
36
|
+
- Fix `Mobility.default_backend`
|
37
|
+
([#497](https://github.com/shioyama/mobility/pull/497))
|
38
|
+
|
39
|
+
### 1.0.2
|
40
|
+
|
41
|
+
### 1.0.1
|
42
|
+
|
43
|
+
- Make `Mobility::Plugins::ActiveRecord::Query::VirtualRow` and
|
44
|
+
`Mobility::Plugins::ActiveRecord::Query::QueryExtension`
|
45
|
+
([#471](https://github.com/shioyama/mobility/pull/471)) public
|
46
|
+
- Fix typo in initializer template
|
47
|
+
([#474](https://github.com/shioyama/mobility/pull/474))
|
6
48
|
|
7
|
-
|
49
|
+
### 1.0.0
|
8
50
|
|
9
51
|
- Fix setting a locale from Rails config
|
10
52
|
([#468](https://github.com/shioyama/mobility/pull/468)) thanks
|
11
53
|
[sergey-alekseev](https://github.com/sergey-alekseev)!
|
12
54
|
- Fixes validations with validates_uniqueness_of
|
13
55
|
([#470](https://github.com/shioyama/mobility/pull/470)) thanks
|
14
|
-
[artplan1](https://github.com/
|
56
|
+
[artplan1](https://github.com/artplan1)!
|
15
57
|
|
16
|
-
|
58
|
+
### 1.0.0.rc1 (pre-release)
|
17
59
|
|
18
60
|
- Remove `Mobility::ActiveRecord`, `Mobility::Sequel` and `Mobility::Arel`, and
|
19
61
|
general cleanup ([#464](https://github.com/shioyama/mobility/pull/464))
|
20
62
|
|
21
|
-
|
63
|
+
### 1.0.0.beta2 (pre-release)
|
22
64
|
|
23
65
|
- Refactor attributes & backend plugins and make `mobility_attributes` public
|
24
66
|
([#462](https://github.com/shioyama/mobility/pull/462))
|
25
67
|
- Make attribute_methods plugin depend on attributes
|
26
68
|
([#461](https://github.com/shioyama/mobility/pull/461))
|
27
69
|
|
28
|
-
|
70
|
+
### 1.0.0.beta1 (pre-release)
|
29
71
|
|
30
72
|
- Remove `Mobility::Backend#apply_plugin`
|
31
73
|
([#454](https://github.com/shioyama/mobility/pull/454))
|
@@ -36,7 +78,7 @@
|
|
36
78
|
- Fix Ruby 2.7 deprecation warnings
|
37
79
|
([#460](https://github.com/shioyama/mobility/pull/460))
|
38
80
|
|
39
|
-
|
81
|
+
### 1.0.0.alpha (pre-release)
|
40
82
|
|
41
83
|
- Default fallbacks plugin to `true` when enabled
|
42
84
|
([#447](https://github.com/shioyama/mobility/pull/447))
|
data/Gemfile
CHANGED
@@ -8,20 +8,11 @@ orm, orm_version = ENV['ORM'], ENV['ORM_VERSION']
|
|
8
8
|
group :development, :test do
|
9
9
|
case orm
|
10
10
|
when 'active_record'
|
11
|
-
orm_version ||= '6.
|
11
|
+
orm_version ||= '6.1'
|
12
12
|
case orm_version
|
13
|
-
when '4.2'
|
14
|
-
gem 'activerecord',
|
15
|
-
when '
|
16
|
-
gem 'activerecord', '>= 5.0', '< 5.1'
|
17
|
-
when '5.1'
|
18
|
-
gem 'activerecord', '>= 5.1', '< 5.2'
|
19
|
-
when '5.2'
|
20
|
-
gem 'activerecord', '>= 5.2.0', '< 5.3'
|
21
|
-
gem 'railties', '>= 5.2.0.rc2', '< 5.3'
|
22
|
-
when '6.0'
|
23
|
-
gem 'activerecord', '>= 6.0.0', '< 6.1'
|
24
|
-
when '6.1'
|
13
|
+
when '4.2', '5.0', '5.1', '5.2', '6.0', '6.1'
|
14
|
+
gem 'activerecord', "~> #{orm_version}.0"
|
15
|
+
when '6.2'
|
25
16
|
git 'https://github.com/rails/rails.git' do
|
26
17
|
gem 'activerecord'
|
27
18
|
gem 'activesupport'
|
@@ -32,10 +23,8 @@ group :development, :test do
|
|
32
23
|
when 'sequel'
|
33
24
|
orm_version ||= '5'
|
34
25
|
case orm_version
|
35
|
-
when '4'
|
36
|
-
gem 'sequel', '>= 4.46.0', '< 5.0'
|
37
26
|
when '5'
|
38
|
-
gem 'sequel',
|
27
|
+
gem 'sequel', "~> #{orm_version}.0"
|
39
28
|
else
|
40
29
|
raise ArgumentError, 'Invalid Sequel version'
|
41
30
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mobility (1.0.
|
4
|
+
mobility (1.0.4)
|
5
5
|
i18n (>= 0.6.10, < 2)
|
6
6
|
request_store (~> 1.0)
|
7
7
|
|
@@ -48,7 +48,7 @@ GEM
|
|
48
48
|
rb-inotify (~> 0.9, >= 0.9.10)
|
49
49
|
lumberjack (1.2.8)
|
50
50
|
method_source (1.0.0)
|
51
|
-
minitest (5.14.
|
51
|
+
minitest (5.14.3)
|
52
52
|
nenv (0.3.0)
|
53
53
|
notiffany (0.1.3)
|
54
54
|
nenv (~> 0.1)
|
@@ -83,16 +83,16 @@ GEM
|
|
83
83
|
shellany (0.0.1)
|
84
84
|
thor (1.0.1)
|
85
85
|
thread_safe (0.3.6)
|
86
|
-
tzinfo (1.2.
|
86
|
+
tzinfo (1.2.9)
|
87
87
|
thread_safe (~> 0.1)
|
88
88
|
yard (0.9.25)
|
89
|
-
zeitwerk (2.4.
|
89
|
+
zeitwerk (2.4.2)
|
90
90
|
|
91
91
|
PLATFORMS
|
92
92
|
ruby
|
93
93
|
|
94
94
|
DEPENDENCIES
|
95
|
-
activerecord (
|
95
|
+
activerecord (~> 6.0.0)
|
96
96
|
benchmark-ips
|
97
97
|
database_cleaner (~> 1.5, >= 1.5.3)
|
98
98
|
guard-rspec
|
data/README.md
CHANGED
@@ -13,8 +13,8 @@ Mobility
|
|
13
13
|
[wiki]: https://github.com/shioyama/mobility/wiki
|
14
14
|
|
15
15
|
**This is the readme for version 1.0 of Mobility. If you are using an earlier
|
16
|
-
version (0.8.x or earlier), you probably want the readme on the [0-8
|
17
|
-
branch](https://github.com/shioyama/mobility/tree/0-8
|
16
|
+
version (0.8.x or earlier), you probably want the readme on the [0-8
|
17
|
+
branch](https://github.com/shioyama/mobility/tree/0-8).**
|
18
18
|
|
19
19
|
Mobility is a gem for storing and retrieving translations as attributes on a
|
20
20
|
class. These translations could be the content of blog posts, captions on
|
@@ -56,12 +56,9 @@ To use the latest pre-version of Mobility 1.0, add this line to your
|
|
56
56
|
application's Gemfile:
|
57
57
|
|
58
58
|
```ruby
|
59
|
-
gem 'mobility', '~> 1.0.
|
59
|
+
gem 'mobility', '~> 1.0.5'
|
60
60
|
```
|
61
61
|
|
62
|
-
For the latest stable version of Mobility, see the readme on the
|
63
|
-
[0-8-stable](https://github.com/shioyama/mobility/tree/0-8-stable) branch.
|
64
|
-
|
65
62
|
### ActiveRecord (Rails)
|
66
63
|
|
67
64
|
Requirements:
|
data/lib/mobility.rb
CHANGED
@@ -107,7 +107,7 @@ module Mobility
|
|
107
107
|
# Alias to default backend defined on *translations_class+.
|
108
108
|
# @return [Symbol,Class]
|
109
109
|
def default_backend
|
110
|
-
translations_class.defaults[:backend]
|
110
|
+
translations_class.defaults[:backend]&.first
|
111
111
|
end
|
112
112
|
|
113
113
|
# Configure Mobility
|
@@ -274,6 +274,12 @@ columns to that table.
|
|
274
274
|
define_method :initialize_dup do |source|
|
275
275
|
super(source)
|
276
276
|
self.send("#{association_name}=", source.send(association_name).map(&:dup))
|
277
|
+
|
278
|
+
# for cache
|
279
|
+
# FIXME: do this better
|
280
|
+
if options[:cache]
|
281
|
+
instance_variable_set(:"@__mobility_#{association_name}_cache", {})
|
282
|
+
end
|
277
283
|
end
|
278
284
|
end
|
279
285
|
include const_set(module_name, dupable)
|
data/lib/mobility/plugin.rb
CHANGED
@@ -121,8 +121,8 @@ Also includes a +configure+ class method to apply plugins to a pluggable
|
|
121
121
|
# Does this class include all plugins this plugin depends (directly) on?
|
122
122
|
# @param [Class] klass Pluggable class
|
123
123
|
def dependencies_satisfied?(klass)
|
124
|
-
|
125
|
-
(
|
124
|
+
plugin_keys = klass.included_plugins.map { |plugin| Plugins.lookup_name(plugin) }
|
125
|
+
(dependencies.keys - plugin_keys).none?
|
126
126
|
end
|
127
127
|
|
128
128
|
# Specifies a dependency of this plugin.
|
@@ -67,9 +67,9 @@ enabled for any one attribute on the model.
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
#
|
71
|
-
#
|
72
|
-
#
|
70
|
+
# Creates a "clean room" for manipulating translated attribute nodes in
|
71
|
+
# an instance-eval'ed block. Inspired by Sequel's (much more
|
72
|
+
# sophisticated) virtual rows.
|
73
73
|
class VirtualRow < BasicObject
|
74
74
|
attr_reader :__backends
|
75
75
|
|
@@ -108,7 +108,7 @@ enabled for any one attribute on the model.
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
111
|
-
private_constant :QueryMethod
|
111
|
+
private_constant :QueryMethod
|
112
112
|
|
113
113
|
module QueryExtension
|
114
114
|
def where!(opts, *rest)
|
@@ -273,7 +273,7 @@ enabled for any one attribute on the model.
|
|
273
273
|
end
|
274
274
|
end
|
275
275
|
|
276
|
-
private_constant :
|
276
|
+
private_constant :FindByMethods
|
277
277
|
end
|
278
278
|
|
279
279
|
class MissingBackend < Mobility::Error; end
|
@@ -33,13 +33,6 @@ Defines:
|
|
33
33
|
def initialize(*args, **original_options)
|
34
34
|
super
|
35
35
|
|
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?
|
41
|
-
end
|
42
|
-
|
43
36
|
include InstanceMethods
|
44
37
|
end
|
45
38
|
|
@@ -87,7 +80,7 @@ Defines:
|
|
87
80
|
|
88
81
|
case options[:backend]
|
89
82
|
when String, Symbol, Class
|
90
|
-
@backend, @backend_options = options[:backend], options
|
83
|
+
@backend, @backend_options = options[:backend], options.dup
|
91
84
|
when Array
|
92
85
|
@backend, @backend_options = options[:backend]
|
93
86
|
@backend_options = @backend_options.merge(original_options)
|
@@ -105,6 +98,14 @@ Defines:
|
|
105
98
|
def validate_options(options)
|
106
99
|
return super unless backend
|
107
100
|
super(options.slice(*(options.keys - backend.valid_keys)))
|
101
|
+
|
102
|
+
# Validate that the default backend from config has valid keys, or if
|
103
|
+
# it is overridden by an array input that the array has valid keys.
|
104
|
+
if options[:backend].is_a?(Array)
|
105
|
+
name, backend_options = options[:backend]
|
106
|
+
extra_keys = backend_options.keys - backend.valid_keys
|
107
|
+
raise InvalidOptionKey, "These are not valid #{name} backend keys: #{extra_keys.join(', ')}." unless extra_keys.empty?
|
108
|
+
end
|
108
109
|
end
|
109
110
|
|
110
111
|
# Override default argument-handling in DSL to store kwargs passed along
|
data/lib/mobility/version.rb
CHANGED
@@ -108,7 +108,7 @@ Mobility.configure do
|
|
108
108
|
#
|
109
109
|
# Adds translated attributes to +attributes+ hash, and defines methods
|
110
110
|
# +translated_attributes+ and +untranslated_attributes+ which return hashes
|
111
|
-
# with
|
111
|
+
# with translated and untranslated attributes, respectively. Be aware that
|
112
112
|
# this plugin can create conflicts with other gems.
|
113
113
|
#
|
114
114
|
# attribute_methods
|
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.5
|
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:
|
37
|
+
date: 2021-01-31 00:00:00.000000000 Z
|
38
38
|
dependencies:
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: request_store
|
metadata.gz.sig
CHANGED
Binary file
|