mobility 0.3.2 → 0.3.3
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +59 -3
- data/README.md +5 -3
- data/lib/mobility/backends/active_record/key_value.rb +13 -0
- data/lib/mobility/backends/sequel/table/query_methods.rb +1 -1
- data/lib/mobility/plugins/active_model/dirty.rb +1 -1
- data/lib/mobility/plugins/active_record/attribute_methods.rb +6 -6
- data/lib/mobility/plugins/active_record/dirty.rb +1 -1
- data/lib/mobility/plugins/default.rb +14 -3
- data/lib/mobility/plugins/dirty.rb +1 -0
- data/lib/mobility/version.rb +1 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 00e8866b69b091c9fd411212b4f262382dc00da3
|
|
4
|
+
data.tar.gz: 45f61733fe33af52d7b4be9e35d75aa0344b6c54
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a942928eba9620bdfccede2153501fa994c475d5174b1e7fdab2c76c2acaaf9a1787ec92938c46103afbb156aba5c70c729130311cbceed6903efd00a782c031
|
|
7
|
+
data.tar.gz: d455f2eb6fd95cf6a6a4a8a02293917a450be4a272bef424dd292d57bfab466caea1adce71ba3f64fb20770cbbb8dd681f8809b4f4112c111c40f2fd9fd38f88
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
## 0.3
|
|
4
4
|
|
|
5
|
+
### 0.3.3 (December 5, 2017)
|
|
6
|
+
* Fix duping for AR KeyValue backend ([#126](https://github.com/shioyama/mobility/pull/126))
|
|
7
|
+
* Pass locale and options to Proc in default plugin ([#122](https://github.com/shioyama/mobility/pull/122))
|
|
8
|
+
|
|
5
9
|
### 0.3.2 (December 1, 2017)
|
|
6
10
|
* Fix issue with querying on translated attributes with Sequel Table backend ([#121](https://github.com/shioyama/mobility/pull/121))
|
|
7
11
|
|
data/Gemfile.lock
CHANGED
|
@@ -1,20 +1,51 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
mobility (0.3.
|
|
4
|
+
mobility (0.3.2)
|
|
5
5
|
i18n (>= 0.6.10, < 0.10)
|
|
6
6
|
request_store (~> 1.0)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
+
actionpack (5.2.0.beta2)
|
|
12
|
+
actionview (= 5.2.0.beta2)
|
|
13
|
+
activesupport (= 5.2.0.beta2)
|
|
14
|
+
rack (~> 2.0)
|
|
15
|
+
rack-test (>= 0.6.3)
|
|
16
|
+
rails-dom-testing (~> 2.0)
|
|
17
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
18
|
+
actionview (5.2.0.beta2)
|
|
19
|
+
activesupport (= 5.2.0.beta2)
|
|
20
|
+
builder (~> 3.1)
|
|
21
|
+
erubi (~> 1.4)
|
|
22
|
+
rails-dom-testing (~> 2.0)
|
|
23
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
|
24
|
+
activemodel (5.2.0.beta2)
|
|
25
|
+
activesupport (= 5.2.0.beta2)
|
|
26
|
+
activerecord (5.2.0.beta2)
|
|
27
|
+
activemodel (= 5.2.0.beta2)
|
|
28
|
+
activesupport (= 5.2.0.beta2)
|
|
29
|
+
arel (>= 9.0)
|
|
30
|
+
activesupport (5.2.0.beta2)
|
|
31
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
32
|
+
i18n (~> 0.7)
|
|
33
|
+
minitest (~> 5.1)
|
|
34
|
+
tzinfo (~> 1.1)
|
|
35
|
+
arel (9.0.0)
|
|
36
|
+
builder (3.2.3)
|
|
11
37
|
byebug (9.1.0)
|
|
12
38
|
coderay (1.1.2)
|
|
13
39
|
concurrent-ruby (1.0.5)
|
|
40
|
+
crass (1.0.3)
|
|
14
41
|
database_cleaner (1.6.2)
|
|
15
42
|
diff-lcs (1.3)
|
|
43
|
+
erubi (1.7.0)
|
|
16
44
|
ffi (1.9.18)
|
|
17
45
|
formatador (0.2.5)
|
|
46
|
+
generator_spec (0.9.4)
|
|
47
|
+
activesupport (>= 3.0.0)
|
|
48
|
+
railties (>= 3.0.0)
|
|
18
49
|
guard (2.14.1)
|
|
19
50
|
formatador (>= 0.2.4)
|
|
20
51
|
listen (>= 2.7, < 4.0)
|
|
@@ -35,10 +66,17 @@ GEM
|
|
|
35
66
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
|
36
67
|
rb-inotify (~> 0.9, >= 0.9.7)
|
|
37
68
|
ruby_dep (~> 1.2)
|
|
69
|
+
loofah (2.1.1)
|
|
70
|
+
crass (~> 1.0.2)
|
|
71
|
+
nokogiri (>= 1.5.9)
|
|
38
72
|
lumberjack (1.0.12)
|
|
39
73
|
method_source (0.9.0)
|
|
74
|
+
mini_portile2 (2.3.0)
|
|
75
|
+
minitest (5.10.3)
|
|
40
76
|
mysql2 (0.4.10)
|
|
41
77
|
nenv (0.3.0)
|
|
78
|
+
nokogiri (1.8.1)
|
|
79
|
+
mini_portile2 (~> 2.3.0)
|
|
42
80
|
notiffany (0.1.1)
|
|
43
81
|
nenv (~> 0.1)
|
|
44
82
|
shellany (~> 0.0)
|
|
@@ -49,6 +87,20 @@ GEM
|
|
|
49
87
|
pry-byebug (3.5.1)
|
|
50
88
|
byebug (~> 9.1)
|
|
51
89
|
pry (~> 0.10)
|
|
90
|
+
rack (2.0.3)
|
|
91
|
+
rack-test (0.8.2)
|
|
92
|
+
rack (>= 1.0, < 3)
|
|
93
|
+
rails-dom-testing (2.0.3)
|
|
94
|
+
activesupport (>= 4.2.0)
|
|
95
|
+
nokogiri (>= 1.6)
|
|
96
|
+
rails-html-sanitizer (1.0.3)
|
|
97
|
+
loofah (~> 2.0)
|
|
98
|
+
railties (5.2.0.beta2)
|
|
99
|
+
actionpack (= 5.2.0.beta2)
|
|
100
|
+
activesupport (= 5.2.0.beta2)
|
|
101
|
+
method_source
|
|
102
|
+
rake (>= 0.8.7)
|
|
103
|
+
thor (>= 0.18.1, < 2.0)
|
|
52
104
|
rake (12.3.0)
|
|
53
105
|
rb-fsevent (0.10.2)
|
|
54
106
|
rb-inotify (0.9.10)
|
|
@@ -68,26 +120,30 @@ GEM
|
|
|
68
120
|
rspec-support (~> 3.7.0)
|
|
69
121
|
rspec-support (3.7.0)
|
|
70
122
|
ruby_dep (1.5.0)
|
|
71
|
-
sequel (5.2.0)
|
|
72
123
|
shellany (0.0.1)
|
|
73
124
|
sqlite3 (1.3.13)
|
|
74
125
|
thor (0.20.0)
|
|
126
|
+
thread_safe (0.3.6)
|
|
127
|
+
tzinfo (1.2.4)
|
|
128
|
+
thread_safe (~> 0.1)
|
|
75
129
|
yard (0.9.12)
|
|
76
130
|
|
|
77
131
|
PLATFORMS
|
|
78
132
|
ruby
|
|
79
133
|
|
|
80
134
|
DEPENDENCIES
|
|
135
|
+
activerecord (>= 5.2.0.beta1, < 5.3)
|
|
81
136
|
bundler (~> 1.12)
|
|
82
137
|
database_cleaner (~> 1.5, >= 1.5.3)
|
|
138
|
+
generator_spec (~> 0.9.4)
|
|
83
139
|
guard-rspec
|
|
84
140
|
mobility!
|
|
85
141
|
mysql2 (~> 0.4.9)
|
|
86
142
|
pg
|
|
87
143
|
pry-byebug
|
|
144
|
+
railties (>= 5.2.0.beta1, < 5.3)
|
|
88
145
|
rake (~> 12, >= 12.2.1)
|
|
89
146
|
rspec (~> 3.0)
|
|
90
|
-
sequel (>= 5.0.0, < 6.0.0)
|
|
91
147
|
sqlite3
|
|
92
148
|
yard (~> 0.9.0)
|
|
93
149
|
|
data/README.md
CHANGED
|
@@ -4,7 +4,9 @@ Mobility
|
|
|
4
4
|
[][gem]
|
|
5
5
|
[][travis]
|
|
6
6
|
[][gemnasium]
|
|
7
|
-
[][codeclimate]
|
|
8
|
+
|
|
9
|
+
[](https://gitter.im/mobility-ruby/mobility)
|
|
8
10
|
|
|
9
11
|
[gem]: https://rubygems.org/gems/mobility
|
|
10
12
|
[travis]: https://travis-ci.org/shioyama/mobility
|
|
@@ -52,7 +54,7 @@ Installation
|
|
|
52
54
|
Add this line to your application's Gemfile:
|
|
53
55
|
|
|
54
56
|
```ruby
|
|
55
|
-
gem 'mobility', '~> 0.3.
|
|
57
|
+
gem 'mobility', '~> 0.3.3'
|
|
56
58
|
```
|
|
57
59
|
|
|
58
60
|
Mobility is cryptographically signed. To be sure the gem you install hasn't
|
|
@@ -110,7 +112,7 @@ See [Getting Started](#quickstart) to get started translating your models.
|
|
|
110
112
|
### Sequel
|
|
111
113
|
|
|
112
114
|
Requirements:
|
|
113
|
-
- Sequel >= 4.0
|
|
115
|
+
- Sequel >= 4.0
|
|
114
116
|
|
|
115
117
|
You can extend `Mobility` just like in ActiveRecord, or you can use the
|
|
116
118
|
`mobility` plugin, which does the same thing:
|
|
@@ -70,6 +70,19 @@ Implements the {Mobility::Backends::KeyValue} backend for ActiveRecord models.
|
|
|
70
70
|
end
|
|
71
71
|
after_destroy :mobility_destroy_key_value_translations
|
|
72
72
|
|
|
73
|
+
module_name = "MobilityArKeyValue#{association_name.to_s.camelcase}"
|
|
74
|
+
unless const_defined?(module_name)
|
|
75
|
+
callback_methods = Module.new do
|
|
76
|
+
define_method :initialize_dup do |source|
|
|
77
|
+
super(source)
|
|
78
|
+
self.send("#{association_name}=", source.send(association_name).map(&:dup))
|
|
79
|
+
# Set inverse on associations
|
|
80
|
+
send(association_name).each { |translation| translation.translatable = self }
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
include const_set(module_name, callback_methods)
|
|
84
|
+
end
|
|
85
|
+
|
|
73
86
|
private
|
|
74
87
|
|
|
75
88
|
# Clean up *all* leftover translations of this model, only once.
|
|
@@ -21,7 +21,7 @@ module Mobility
|
|
|
21
21
|
define_method :"join_#{association_name}" do |**options|
|
|
22
22
|
if joins = @opts[:join]
|
|
23
23
|
# Return self if we've already joined this table
|
|
24
|
-
return self if joins.
|
|
24
|
+
return self if joins.any? { |clause| clause.table_expr == table_name }
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
join_type = options[:outer_join] ? :left_outer : :inner
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module Mobility
|
|
4
4
|
module Plugins
|
|
5
|
+
module ActiveModel
|
|
5
6
|
=begin
|
|
6
7
|
|
|
7
8
|
Dirty tracking for models which include the +ActiveModel::Dirty+ module.
|
|
@@ -22,7 +23,6 @@ value of the translated attribute if passed to it.
|
|
|
22
23
|
@see http://api.rubyonrails.org/classes/ActiveModel/Dirty.html Rails documentation for Active Model Dirty module
|
|
23
24
|
|
|
24
25
|
=end
|
|
25
|
-
module ActiveModel
|
|
26
26
|
module Dirty
|
|
27
27
|
# @!group Backend Accessors
|
|
28
28
|
# @!macro backend_writer
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
module Mobility
|
|
2
2
|
module Plugins
|
|
3
|
-
=begin
|
|
4
|
-
|
|
5
|
-
Module builder adding translated attributes to #attributes hash on model
|
|
6
|
-
instance. See {Mobility::Plugins::AttributeMethods} for further details.
|
|
7
|
-
|
|
8
|
-
=end
|
|
9
3
|
module ActiveRecord
|
|
10
4
|
module TranslatedAttributes
|
|
11
5
|
def translated_attributes
|
|
@@ -17,6 +11,12 @@ instance. See {Mobility::Plugins::AttributeMethods} for further details.
|
|
|
17
11
|
end
|
|
18
12
|
end
|
|
19
13
|
|
|
14
|
+
=begin
|
|
15
|
+
|
|
16
|
+
Module builder adding translated attributes to #attributes hash on model
|
|
17
|
+
instance. See {Mobility::Plugins::AttributeMethods} for further details.
|
|
18
|
+
|
|
19
|
+
=end
|
|
20
20
|
class AttributeMethods < Module
|
|
21
21
|
def initialize(*attribute_names)
|
|
22
22
|
include TranslatedAttributes
|
|
@@ -3,6 +3,7 @@ require "mobility/plugins/active_model/dirty"
|
|
|
3
3
|
|
|
4
4
|
module Mobility
|
|
5
5
|
module Plugins
|
|
6
|
+
module ActiveRecord
|
|
6
7
|
=begin
|
|
7
8
|
|
|
8
9
|
Dirty tracking for AR models. See {Mobility::Plugins::ActiveModel::Dirty} for
|
|
@@ -20,7 +21,6 @@ AR::Dirty plugin adds support for the following persistence-specific methods
|
|
|
20
21
|
- +title_in_database+
|
|
21
22
|
|
|
22
23
|
=end
|
|
23
|
-
module ActiveRecord
|
|
24
24
|
module Dirty
|
|
25
25
|
include ActiveModel::Dirty
|
|
26
26
|
|
|
@@ -5,6 +5,12 @@ module Mobility
|
|
|
5
5
|
Defines value or proc to fall through to if return value from getter would
|
|
6
6
|
otherwise be nil.
|
|
7
7
|
|
|
8
|
+
If default is a proc, it is passed a hash with four keyword arguments:
|
|
9
|
+
- +model+: the model instance
|
|
10
|
+
- +attribute+: the attribute name (a String)
|
|
11
|
+
- +locale+: the locale (a Symbol)
|
|
12
|
+
- +options+: hash of options passed in to accessor
|
|
13
|
+
|
|
8
14
|
@example With default enabled (falls through to default value)
|
|
9
15
|
class Post
|
|
10
16
|
extend Mobility
|
|
@@ -40,12 +46,13 @@ otherwise be nil.
|
|
|
40
46
|
@example Using Proc as default
|
|
41
47
|
class Post
|
|
42
48
|
extend Mobility
|
|
43
|
-
translates :title, default: lambda { |
|
|
49
|
+
translates :title, default: lambda { |attribute:, locale:| "#{attribute} in #{locale}" }
|
|
44
50
|
end
|
|
45
51
|
|
|
52
|
+
Mobility.locale = :en
|
|
46
53
|
post = Post.new(title: nil)
|
|
47
54
|
post.title
|
|
48
|
-
#=> "title"
|
|
55
|
+
#=> "title in en"
|
|
49
56
|
|
|
50
57
|
post.title(default: lambda { |model:| model.class.name.to_s })
|
|
51
58
|
#=> "Post"
|
|
@@ -62,7 +69,11 @@ otherwise be nil.
|
|
|
62
69
|
define_method :read do |locale, options = {}|
|
|
63
70
|
default = options.has_key?(:default) ? options.delete(:default) : default_option
|
|
64
71
|
if (value = super(locale, options)).nil?
|
|
65
|
-
default.is_a?(Proc)
|
|
72
|
+
return default unless default.is_a?(Proc)
|
|
73
|
+
default.call(model: model,
|
|
74
|
+
attribute: attribute,
|
|
75
|
+
locale: locale,
|
|
76
|
+
options: options)
|
|
66
77
|
else
|
|
67
78
|
value
|
|
68
79
|
end
|
|
@@ -9,6 +9,7 @@ Dirty tracking for Mobility attributes. See class-specific implementations for
|
|
|
9
9
|
details.
|
|
10
10
|
|
|
11
11
|
@see Mobility::Plugins::ActiveModel::Dirty
|
|
12
|
+
@see Mobility::Plugins::ActiveRecord::Dirty
|
|
12
13
|
@see Mobility::Plugins::Sequel::Dirty
|
|
13
14
|
|
|
14
15
|
@note Dirty tracking can have unexpected results when combined with fallbacks.
|
data/lib/mobility/version.rb
CHANGED
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: 0.3.
|
|
4
|
+
version: 0.3.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Chris Salzberg
|
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
|
30
30
|
eGDROPZoL5RXwiOnRbexxa7dcAxMrDfGB/hpiunIPWPsi4n5P7K/6OO/sGVMl9xv
|
|
31
31
|
SZBPXjzrHdyOFLBYXB+PG7s3F/4=
|
|
32
32
|
-----END CERTIFICATE-----
|
|
33
|
-
date: 2017-12-
|
|
33
|
+
date: 2017-12-05 00:00:00.000000000 Z
|
|
34
34
|
dependencies:
|
|
35
35
|
- !ruby/object:Gem::Dependency
|
|
36
36
|
name: request_store
|
metadata.gz.sig
CHANGED
|
Binary file
|