globalize 5.1.0 → 5.2.0
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 +5 -5
- data/Appraisals +33 -0
- data/CHANGELOG.md +1 -1
- data/CONTRIBUTING.md +15 -0
- data/Gemfile +1 -24
- data/Gemfile.lock +27 -255
- data/README.md +2 -7
- data/lib/globalize.rb +8 -0
- data/lib/globalize/active_record.rb +10 -10
- data/lib/globalize/active_record/act_macro.rb +4 -4
- data/lib/globalize/active_record/adapter.rb +9 -0
- data/lib/globalize/active_record/adapter_dirty.rb +3 -1
- data/lib/globalize/active_record/class_methods.rb +4 -3
- data/lib/globalize/active_record/instance_methods.rb +44 -16
- data/lib/globalize/active_record/migration.rb +1 -1
- data/lib/globalize/active_record/{query_methods.rb → translated_attributes_query.rb} +59 -1
- data/lib/globalize/version.rb +1 -1
- metadata +66 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 18d470a9030a9901a83b9d3c48080661b10000a20049f598eece0b41727d66dc
|
4
|
+
data.tar.gz: b1ea4e1d1c0210271fede3bf8d7903ac658ace1af1742bf29980139efc555673
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70eaedf3edada661ab9495f31ec46544cc950ba4c6ff667c9d6e1bf699cd770de02ffab2783ba29735c39d35d6b92c9ab2b0f8061185a3e1f3469354f82e560a
|
7
|
+
data.tar.gz: 1b255c9f3164165e76650a4b0fbbfbc989f87ec524a9c4bb1e70ea8fd54b3f16811a9c5a42cfe8f38df0d47ca00fd2632a95f0918c58bdb2e24b5c313b5d2508
|
data/Appraisals
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RAILS_VERSIONS = %w[
|
4
|
+
4.2.10
|
5
|
+
5.1.6
|
6
|
+
5.2.1
|
7
|
+
]
|
8
|
+
|
9
|
+
RAILS_VERSIONS.each do |version|
|
10
|
+
appraise "rails_#{version}" do
|
11
|
+
gem 'activemodel', version
|
12
|
+
gem 'activerecord', version
|
13
|
+
|
14
|
+
platforms :rbx do
|
15
|
+
gem "rubysl", "~> 2.0"
|
16
|
+
gem "rubinius-developer_tools"
|
17
|
+
end
|
18
|
+
|
19
|
+
platforms :jruby do
|
20
|
+
if !ENV['TRAVIS'] || ENV['DB'] == 'sqlite3'
|
21
|
+
gem 'activerecord-jdbcsqlite3-adapter', '~> 1'
|
22
|
+
end
|
23
|
+
|
24
|
+
if !ENV['TRAVIS'] || ENV['DB'] == 'mysql'
|
25
|
+
gem 'activerecord-jdbcmysql-adapter', '~> 1'
|
26
|
+
end
|
27
|
+
|
28
|
+
if !ENV['TRAVIS'] || %w(postgres postgresql).include?(ENV['DB'])
|
29
|
+
gem 'activerecord-jdbcpostgresql-adapter', '~> 1'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Globalize Changelog
|
2
2
|
|
3
|
-
## 5.1.0 (
|
3
|
+
## 5.1.0 (2018-01-15)
|
4
4
|
|
5
5
|
* Replaced `after_` callbacks with `before_` callbacks and set `autosave: true` by default. [#341](https://github.com/globalize/globalize/pull/341) by [Andrew Volozhanin](https://github.com/scarfacedeb)
|
6
6
|
* Add [RequestStore](https://github.com/steveklabnik/request_store) to make Globalize thread-safe again [#420](https://github.com/globalize/globalize/pull/420)
|
data/CONTRIBUTING.md
CHANGED
@@ -35,3 +35,18 @@ Have a bug fix, code improvement or proposed feature? Do the following:
|
|
35
35
|
For pull requests to Rails/ActiveRecord 4 version of Globalize (v3.x), post to the `master` branch. For pull requests to the Rails/ActiveRecord 3.x version of Globalize (3.x), post to the `3-0-stable` branch.
|
36
36
|
|
37
37
|
When you submit the pull request, Travis CI will run the [test suite](https://travis-ci.org/globalize/globalize) against your branch and will highlight any failures. Unless there is a good reason for it, we do not generally accept pull requests that take Globalize from green to red.
|
38
|
+
|
39
|
+
## Testing
|
40
|
+
|
41
|
+
### Requirements
|
42
|
+
|
43
|
+
- Ruby
|
44
|
+
- Bundler
|
45
|
+
- SQLite
|
46
|
+
- You can switch the database by adding an environment variable. See `test/support/database.rb`.
|
47
|
+
- You can also configure your database configurations. See `test/support/database.yml`.
|
48
|
+
|
49
|
+
### Run tests on your local machine
|
50
|
+
|
51
|
+
- `bundle install`
|
52
|
+
- `bundle exec rake`
|
data/Gemfile
CHANGED
@@ -1,26 +1,3 @@
|
|
1
|
-
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
gemspec
|
4
|
-
|
5
|
-
gem "pry"
|
6
|
-
|
7
|
-
eval File.read(File.expand_path("../gemfiles/.gemfile.database-config.rb", __FILE__))
|
8
|
-
|
9
|
-
platforms :rbx do
|
10
|
-
gem "rubysl", "~> 2.0"
|
11
|
-
gem "rubinius-developer_tools"
|
12
|
-
end
|
13
|
-
|
14
|
-
platforms :jruby do
|
15
|
-
if !ENV['TRAVIS'] || ENV['DB'] == 'sqlite3'
|
16
|
-
gem 'activerecord-jdbcsqlite3-adapter', git: "https://github.com/jruby/activerecord-jdbc-adapter"
|
17
|
-
end
|
18
|
-
|
19
|
-
if !ENV['TRAVIS'] || ENV['DB'] == 'mysql'
|
20
|
-
gem 'activerecord-jdbcmysql-adapter', git: "https://github.com/jruby/activerecord-jdbc-adapter"
|
21
|
-
end
|
22
|
-
|
23
|
-
if !ENV['TRAVIS'] || %w(postgres postgresql).include?(ENV['DB'])
|
24
|
-
gem 'activerecord-jdbcpostgresql-adapter', git: "https://github.com/jruby/activerecord-jdbc-adapter"
|
25
|
-
end
|
26
|
-
end
|
data/Gemfile.lock
CHANGED
@@ -1,55 +1,42 @@
|
|
1
|
-
GIT
|
2
|
-
remote: https://github.com/jruby/activerecord-jdbc-adapter
|
3
|
-
revision: 4ae8a3c4d4b00d1c33ef6b9099f63a3f78da21ad
|
4
|
-
specs:
|
5
|
-
activerecord-jdbc-adapter (51.0)
|
6
|
-
activerecord (~> 5.1.0)
|
7
|
-
activerecord-jdbcmysql-adapter (51.0)
|
8
|
-
activerecord-jdbc-adapter (~> 51.0)
|
9
|
-
jdbc-mysql (~> 5.1.36)
|
10
|
-
activerecord-jdbcpostgresql-adapter (51.0)
|
11
|
-
activerecord-jdbc-adapter (~> 51.0)
|
12
|
-
jdbc-postgres (>= 9.4, < 43)
|
13
|
-
activerecord-jdbcsqlite3-adapter (51.0)
|
14
|
-
activerecord-jdbc-adapter (~> 51.0)
|
15
|
-
jdbc-sqlite3 (~> 3.8, < 3.30)
|
16
|
-
jdbc-mysql (5.1.44)
|
17
|
-
jdbc-postgres (42.1.4)
|
18
|
-
jdbc-sqlite3 (3.20.1)
|
19
|
-
|
20
1
|
PATH
|
21
2
|
remote: .
|
22
3
|
specs:
|
23
|
-
globalize (5.
|
24
|
-
activemodel (>= 4.2, < 5.
|
25
|
-
activerecord (>= 4.2, < 5.
|
4
|
+
globalize (5.2.0)
|
5
|
+
activemodel (>= 4.2, < 5.3)
|
6
|
+
activerecord (>= 4.2, < 5.3)
|
26
7
|
request_store (~> 1.0)
|
27
8
|
|
28
9
|
GEM
|
29
10
|
remote: https://rubygems.org/
|
30
11
|
specs:
|
31
|
-
activemodel (5.1
|
32
|
-
activesupport (= 5.1
|
33
|
-
activerecord (5.1
|
34
|
-
activemodel (= 5.1
|
35
|
-
activesupport (= 5.1
|
36
|
-
arel (
|
37
|
-
activesupport (5.1
|
12
|
+
activemodel (5.2.1)
|
13
|
+
activesupport (= 5.2.1)
|
14
|
+
activerecord (5.2.1)
|
15
|
+
activemodel (= 5.2.1)
|
16
|
+
activesupport (= 5.2.1)
|
17
|
+
arel (>= 9.0)
|
18
|
+
activesupport (5.2.1)
|
38
19
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
39
|
-
i18n (
|
20
|
+
i18n (>= 0.7, < 2)
|
40
21
|
minitest (~> 5.1)
|
41
22
|
tzinfo (~> 1.1)
|
42
23
|
ansi (1.5.0)
|
43
|
-
|
24
|
+
appraisal (2.2.0)
|
25
|
+
bundler
|
26
|
+
rake
|
27
|
+
thor (>= 0.14.0)
|
28
|
+
arel (9.0.0)
|
44
29
|
builder (3.2.3)
|
45
30
|
coderay (1.1.2)
|
46
31
|
concurrent-ruby (1.0.5)
|
47
32
|
concurrent-ruby (1.0.5-java)
|
48
33
|
database_cleaner (1.6.2)
|
49
34
|
ffi (1.9.18-java)
|
50
|
-
|
51
|
-
i18n (0.9.1)
|
35
|
+
i18n (1.1.1)
|
52
36
|
concurrent-ruby (~> 1.0)
|
37
|
+
m (1.5.1)
|
38
|
+
method_source (>= 0.6.7)
|
39
|
+
rake (>= 0.9.2.2)
|
53
40
|
method_source (0.9.0)
|
54
41
|
minitest (5.11.1)
|
55
42
|
minitest-reporters (1.1.19)
|
@@ -57,8 +44,6 @@ GEM
|
|
57
44
|
builder
|
58
45
|
minitest (>= 5.0)
|
59
46
|
ruby-progressbar
|
60
|
-
mysql2 (0.4.10)
|
61
|
-
pg (1.0.0)
|
62
47
|
pry (0.11.3)
|
63
48
|
coderay (~> 1.1.0)
|
64
49
|
method_source (~> 0.9.0)
|
@@ -66,227 +51,19 @@ GEM
|
|
66
51
|
coderay (~> 1.1.0)
|
67
52
|
method_source (~> 0.9.0)
|
68
53
|
spoon (~> 0.0)
|
69
|
-
rack (2.0.
|
54
|
+
rack (2.0.5)
|
70
55
|
rake (12.3.0)
|
71
56
|
rdoc (6.0.1)
|
72
|
-
request_store (1.4.
|
57
|
+
request_store (1.4.1)
|
73
58
|
rack (>= 1.4)
|
74
|
-
rubinius-coverage (2.1)
|
75
|
-
rubinius-debugger (2.6)
|
76
|
-
rubinius-developer_tools (2.0.0)
|
77
|
-
rubinius-coverage (~> 2.0)
|
78
|
-
rubinius-debugger (~> 2.0)
|
79
|
-
rubinius-profiler (~> 2.0)
|
80
|
-
rubinius-profiler (2.1)
|
81
59
|
ruby-progressbar (1.9.0)
|
82
|
-
rubysl (2.2.0)
|
83
|
-
rubysl-abbrev (~> 2.0)
|
84
|
-
rubysl-base64 (~> 2.0)
|
85
|
-
rubysl-benchmark (~> 2.0)
|
86
|
-
rubysl-bigdecimal (~> 2.0)
|
87
|
-
rubysl-cgi (~> 2.0)
|
88
|
-
rubysl-cgi-session (~> 2.0)
|
89
|
-
rubysl-cmath (~> 2.0)
|
90
|
-
rubysl-complex (~> 2.0)
|
91
|
-
rubysl-continuation (~> 2.0)
|
92
|
-
rubysl-coverage (~> 2.0)
|
93
|
-
rubysl-csv (~> 2.0)
|
94
|
-
rubysl-curses (~> 2.0)
|
95
|
-
rubysl-date (~> 2.0)
|
96
|
-
rubysl-delegate (~> 2.0)
|
97
|
-
rubysl-digest (~> 2.0)
|
98
|
-
rubysl-drb (~> 2.0)
|
99
|
-
rubysl-e2mmap (~> 2.0)
|
100
|
-
rubysl-english (~> 2.0)
|
101
|
-
rubysl-enumerator (~> 2.0)
|
102
|
-
rubysl-erb (~> 2.0)
|
103
|
-
rubysl-etc (~> 2.0)
|
104
|
-
rubysl-expect (~> 2.0)
|
105
|
-
rubysl-fcntl (~> 2.0)
|
106
|
-
rubysl-fiber (~> 2.0)
|
107
|
-
rubysl-fileutils (~> 2.0)
|
108
|
-
rubysl-find (~> 2.0)
|
109
|
-
rubysl-forwardable (~> 2.0)
|
110
|
-
rubysl-getoptlong (~> 2.0)
|
111
|
-
rubysl-gserver (~> 2.0)
|
112
|
-
rubysl-io-console (~> 2.0)
|
113
|
-
rubysl-io-nonblock (~> 2.0)
|
114
|
-
rubysl-io-wait (~> 2.0)
|
115
|
-
rubysl-ipaddr (~> 2.0)
|
116
|
-
rubysl-irb (~> 2.1)
|
117
|
-
rubysl-logger (~> 2.0)
|
118
|
-
rubysl-mathn (~> 2.0)
|
119
|
-
rubysl-matrix (~> 2.0)
|
120
|
-
rubysl-mkmf (~> 2.0)
|
121
|
-
rubysl-monitor (~> 2.0)
|
122
|
-
rubysl-mutex_m (~> 2.0)
|
123
|
-
rubysl-net-ftp (~> 2.0)
|
124
|
-
rubysl-net-http (~> 2.0)
|
125
|
-
rubysl-net-imap (~> 2.0)
|
126
|
-
rubysl-net-pop (~> 2.0)
|
127
|
-
rubysl-net-protocol (~> 2.0)
|
128
|
-
rubysl-net-smtp (~> 2.0)
|
129
|
-
rubysl-net-telnet (~> 2.0)
|
130
|
-
rubysl-nkf (~> 2.0)
|
131
|
-
rubysl-observer (~> 2.0)
|
132
|
-
rubysl-open-uri (~> 2.0)
|
133
|
-
rubysl-open3 (~> 2.0)
|
134
|
-
rubysl-openssl (~> 2.0)
|
135
|
-
rubysl-optparse (~> 2.0)
|
136
|
-
rubysl-ostruct (~> 2.0)
|
137
|
-
rubysl-pathname (~> 2.0)
|
138
|
-
rubysl-prettyprint (~> 2.0)
|
139
|
-
rubysl-prime (~> 2.0)
|
140
|
-
rubysl-profile (~> 2.0)
|
141
|
-
rubysl-profiler (~> 2.0)
|
142
|
-
rubysl-pstore (~> 2.0)
|
143
|
-
rubysl-pty (~> 2.0)
|
144
|
-
rubysl-rational (~> 2.0)
|
145
|
-
rubysl-resolv (~> 2.0)
|
146
|
-
rubysl-rexml (~> 2.0)
|
147
|
-
rubysl-rinda (~> 2.0)
|
148
|
-
rubysl-rss (~> 2.0)
|
149
|
-
rubysl-scanf (~> 2.0)
|
150
|
-
rubysl-securerandom (~> 2.0)
|
151
|
-
rubysl-set (~> 2.0)
|
152
|
-
rubysl-shellwords (~> 2.0)
|
153
|
-
rubysl-singleton (~> 2.0)
|
154
|
-
rubysl-socket (~> 2.0)
|
155
|
-
rubysl-stringio (~> 2.0)
|
156
|
-
rubysl-strscan (~> 2.0)
|
157
|
-
rubysl-sync (~> 2.0)
|
158
|
-
rubysl-syslog (~> 2.0)
|
159
|
-
rubysl-tempfile (~> 2.0)
|
160
|
-
rubysl-thread (~> 2.0)
|
161
|
-
rubysl-thwait (~> 2.0)
|
162
|
-
rubysl-time (~> 2.0)
|
163
|
-
rubysl-timeout (~> 2.0)
|
164
|
-
rubysl-tmpdir (~> 2.0)
|
165
|
-
rubysl-tsort (~> 2.0)
|
166
|
-
rubysl-un (~> 2.0)
|
167
|
-
rubysl-unicode_normalize (~> 2.0)
|
168
|
-
rubysl-uri (~> 2.0)
|
169
|
-
rubysl-weakref (~> 2.0)
|
170
|
-
rubysl-webrick (~> 2.0)
|
171
|
-
rubysl-xmlrpc (~> 2.0)
|
172
|
-
rubysl-yaml (~> 2.0)
|
173
|
-
rubysl-zlib (~> 2.0)
|
174
|
-
rubysl-abbrev (2.0.4)
|
175
|
-
rubysl-base64 (2.0.0)
|
176
|
-
rubysl-benchmark (2.0.1)
|
177
|
-
rubysl-bigdecimal (2.0.2)
|
178
|
-
rubysl-cgi (2.0.1)
|
179
|
-
rubysl-cgi-session (2.1.0)
|
180
|
-
rubysl-cmath (2.0.0)
|
181
|
-
rubysl-complex (2.0.0)
|
182
|
-
rubysl-continuation (2.0.0)
|
183
|
-
rubysl-coverage (2.1)
|
184
|
-
rubysl-csv (2.0.2)
|
185
|
-
rubysl-english (~> 2.0)
|
186
|
-
rubysl-curses (2.0.1)
|
187
|
-
rubysl-date (2.0.9)
|
188
|
-
rubysl-delegate (2.0.1)
|
189
|
-
rubysl-digest (2.0.8)
|
190
|
-
rubysl-drb (2.0.1)
|
191
|
-
rubysl-e2mmap (2.0.0)
|
192
|
-
rubysl-english (2.0.0)
|
193
|
-
rubysl-enumerator (2.0.0)
|
194
|
-
rubysl-erb (2.0.2)
|
195
|
-
rubysl-etc (2.0.3)
|
196
|
-
ffi2-generators (~> 0.1)
|
197
|
-
rubysl-expect (2.0.0)
|
198
|
-
rubysl-fcntl (2.0.4)
|
199
|
-
ffi2-generators (~> 0.1)
|
200
|
-
rubysl-fiber (2.0.0)
|
201
|
-
rubysl-fileutils (2.0.3)
|
202
|
-
rubysl-find (2.0.1)
|
203
|
-
rubysl-forwardable (2.0.1)
|
204
|
-
rubysl-getoptlong (2.0.0)
|
205
|
-
rubysl-gserver (2.0.0)
|
206
|
-
rubysl-socket (~> 2.0)
|
207
|
-
rubysl-thread (~> 2.0)
|
208
|
-
rubysl-io-console (2.0.0)
|
209
|
-
rubysl-io-nonblock (2.0.0)
|
210
|
-
rubysl-io-wait (2.0.0)
|
211
|
-
rubysl-ipaddr (2.0.0)
|
212
|
-
rubysl-irb (2.1.1)
|
213
|
-
rubysl-e2mmap (~> 2.0)
|
214
|
-
rubysl-mathn (~> 2.0)
|
215
|
-
rubysl-thread (~> 2.0)
|
216
|
-
rubysl-logger (2.1.0)
|
217
|
-
rubysl-mathn (2.0.0)
|
218
|
-
rubysl-matrix (2.1.0)
|
219
|
-
rubysl-e2mmap (~> 2.0)
|
220
|
-
rubysl-mkmf (2.1)
|
221
|
-
rubysl-fileutils (~> 2.0)
|
222
|
-
rubysl-shellwords (~> 2.0)
|
223
|
-
rubysl-monitor (2.1)
|
224
|
-
rubysl-mutex_m (2.0.0)
|
225
|
-
rubysl-net-ftp (2.0.1)
|
226
|
-
rubysl-net-http (2.0.4)
|
227
|
-
rubysl-cgi (~> 2.0)
|
228
|
-
rubysl-erb (~> 2.0)
|
229
|
-
rubysl-singleton (~> 2.0)
|
230
|
-
rubysl-net-imap (2.0.1)
|
231
|
-
rubysl-net-pop (2.0.1)
|
232
|
-
rubysl-net-protocol (2.0.1)
|
233
|
-
rubysl-net-smtp (2.0.1)
|
234
|
-
rubysl-net-telnet (2.0.0)
|
235
|
-
rubysl-nkf (2.0.1)
|
236
|
-
rubysl-observer (2.0.0)
|
237
|
-
rubysl-open-uri (2.0.0)
|
238
|
-
rubysl-open3 (2.0.0)
|
239
|
-
rubysl-openssl (2.9)
|
240
|
-
rubysl-optparse (2.0.1)
|
241
|
-
rubysl-shellwords (~> 2.0)
|
242
|
-
rubysl-ostruct (2.1.0)
|
243
|
-
rubysl-pathname (2.3)
|
244
|
-
rubysl-prettyprint (2.0.3)
|
245
|
-
rubysl-prime (2.0.1)
|
246
|
-
rubysl-profile (2.0.0)
|
247
|
-
rubysl-profiler (2.1)
|
248
|
-
rubysl-pstore (2.0.0)
|
249
|
-
rubysl-pty (2.0.3)
|
250
|
-
rubysl-rational (2.0.1)
|
251
|
-
rubysl-resolv (2.1.2)
|
252
|
-
rubysl-rexml (2.0.4)
|
253
|
-
rubysl-rinda (2.0.1)
|
254
|
-
rubysl-rss (2.0.0)
|
255
|
-
rubysl-scanf (2.0.0)
|
256
|
-
rubysl-securerandom (2.0.0)
|
257
|
-
rubysl-set (2.0.1)
|
258
|
-
rubysl-shellwords (2.0.0)
|
259
|
-
rubysl-singleton (2.0.0)
|
260
|
-
rubysl-socket (2.2.1)
|
261
|
-
rubysl-fcntl (~> 2.0)
|
262
|
-
rubysl-stringio (2.2)
|
263
|
-
rubysl-strscan (2.0.0)
|
264
|
-
rubysl-sync (2.0.0)
|
265
|
-
rubysl-syslog (2.1.0)
|
266
|
-
ffi2-generators (~> 0.1)
|
267
|
-
rubysl-tempfile (2.0.1)
|
268
|
-
rubysl-thread (2.1)
|
269
|
-
rubysl-thwait (2.0.0)
|
270
|
-
rubysl-time (2.0.3)
|
271
|
-
rubysl-timeout (2.0.0)
|
272
|
-
rubysl-tmpdir (2.0.1)
|
273
|
-
rubysl-tsort (2.0.1)
|
274
|
-
rubysl-un (2.0.0)
|
275
|
-
rubysl-fileutils (~> 2.0)
|
276
|
-
rubysl-optparse (~> 2.0)
|
277
|
-
rubysl-unicode_normalize (2.0)
|
278
|
-
rubysl-uri (2.0.0)
|
279
|
-
rubysl-weakref (2.0.0)
|
280
|
-
rubysl-webrick (2.0.0)
|
281
|
-
rubysl-xmlrpc (2.0.0)
|
282
|
-
rubysl-yaml (2.1.0)
|
283
|
-
rubysl-zlib (2.0.1)
|
284
60
|
spoon (0.0.6)
|
285
61
|
ffi
|
286
62
|
sqlite3 (1.3.13)
|
63
|
+
thor (0.20.0)
|
287
64
|
thread_safe (0.3.6)
|
288
65
|
thread_safe (0.3.6-java)
|
289
|
-
tzinfo (1.2.
|
66
|
+
tzinfo (1.2.5)
|
290
67
|
thread_safe (~> 0.1)
|
291
68
|
|
292
69
|
PLATFORMS
|
@@ -294,21 +71,16 @@ PLATFORMS
|
|
294
71
|
ruby
|
295
72
|
|
296
73
|
DEPENDENCIES
|
297
|
-
|
298
|
-
activerecord-jdbcpostgresql-adapter!
|
299
|
-
activerecord-jdbcsqlite3-adapter!
|
74
|
+
appraisal
|
300
75
|
database_cleaner
|
301
76
|
globalize!
|
77
|
+
m
|
302
78
|
minitest
|
303
79
|
minitest-reporters
|
304
|
-
mysql2
|
305
|
-
pg
|
306
80
|
pry
|
307
81
|
rake
|
308
82
|
rdoc
|
309
|
-
rubinius-developer_tools
|
310
|
-
rubysl (~> 2.0)
|
311
83
|
sqlite3
|
312
84
|
|
313
85
|
BUNDLED WITH
|
314
|
-
1.
|
86
|
+
1.17.1
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|

|
2
2
|
|
3
3
|
[](https://travis-ci.org/globalize/globalize) [](https://codeclimate.com/github/globalize/globalize)
|
4
|
+
[](https://www.codetriage.com/globalize/globalize)
|
4
5
|
|
5
6
|
You can chat with us using Gitter:
|
6
7
|
|
@@ -27,13 +28,7 @@ gem install globalize
|
|
27
28
|
When using bundler put this in your Gemfile:
|
28
29
|
|
29
30
|
```ruby
|
30
|
-
gem 'globalize', '~> 5.
|
31
|
-
```
|
32
|
-
|
33
|
-
You have to use the **master** branch to work with Rails 5, or you can use a pre-release gem:
|
34
|
-
|
35
|
-
```ruby
|
36
|
-
gem 'globalize', '~> 5.1.0.beta2'
|
31
|
+
gem 'globalize', '~> 5.1.0'
|
37
32
|
```
|
38
33
|
|
39
34
|
Please help us by letting us know what works, and what doesn't, when using pre-release code.
|
data/lib/globalize.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
module Globalize
|
2
2
|
module ActiveRecord
|
3
|
-
autoload :ActMacro,
|
4
|
-
autoload :Adapter,
|
5
|
-
autoload :AdapterDirty,
|
6
|
-
autoload :Attributes,
|
7
|
-
autoload :ClassMethods,
|
8
|
-
autoload :Exceptions,
|
9
|
-
autoload :InstanceMethods,
|
10
|
-
autoload :Migration,
|
11
|
-
autoload :Translation,
|
12
|
-
autoload :
|
3
|
+
autoload :ActMacro, 'globalize/active_record/act_macro'
|
4
|
+
autoload :Adapter, 'globalize/active_record/adapter'
|
5
|
+
autoload :AdapterDirty, 'globalize/active_record/adapter_dirty'
|
6
|
+
autoload :Attributes, 'globalize/active_record/attributes'
|
7
|
+
autoload :ClassMethods, 'globalize/active_record/class_methods'
|
8
|
+
autoload :Exceptions, 'globalize/active_record/exceptions'
|
9
|
+
autoload :InstanceMethods, 'globalize/active_record/instance_methods'
|
10
|
+
autoload :Migration, 'globalize/active_record/migration'
|
11
|
+
autoload :Translation, 'globalize/active_record/translation'
|
12
|
+
autoload :TranslatedAttributesQuery, 'globalize/active_record/translated_attributes_query'
|
13
13
|
end
|
14
14
|
end
|
@@ -41,7 +41,7 @@ module Globalize
|
|
41
41
|
end
|
42
42
|
|
43
43
|
begin
|
44
|
-
if ::ActiveRecord::VERSION::STRING > "5.0" && table_exists? &&translation_class.table_exists?
|
44
|
+
if ::ActiveRecord::VERSION::STRING > "5.0" && table_exists? && translation_class.table_exists?
|
45
45
|
self.ignored_columns += translated_attribute_names.map(&:to_s)
|
46
46
|
reset_column_information
|
47
47
|
end
|
@@ -99,11 +99,11 @@ module Globalize
|
|
99
99
|
:foreign_key => options[:foreign_key],
|
100
100
|
:dependent => :destroy,
|
101
101
|
:extend => HasManyExtensions,
|
102
|
-
:autosave =>
|
102
|
+
:autosave => false,
|
103
103
|
:inverse_of => :globalized_model
|
104
104
|
|
105
|
-
|
106
|
-
|
105
|
+
after_create :save_translations!
|
106
|
+
after_update :save_translations!
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
@@ -43,6 +43,9 @@ module Globalize
|
|
43
43
|
value = value.val if value.is_a?(Arel::Nodes::Casted)
|
44
44
|
translation[name] = value
|
45
45
|
end
|
46
|
+
|
47
|
+
ensure_foreign_key_for(translation)
|
48
|
+
translation.save!
|
46
49
|
end
|
47
50
|
|
48
51
|
reset
|
@@ -54,6 +57,12 @@ module Globalize
|
|
54
57
|
|
55
58
|
protected
|
56
59
|
|
60
|
+
# Sometimes the translation is initialised before a foreign key can be set.
|
61
|
+
def ensure_foreign_key_for(translation)
|
62
|
+
# AR >= 4.1 reflections renamed to _reflections
|
63
|
+
translation[translation.class.reflections.stringify_keys["globalized_model"].foreign_key] = record.id
|
64
|
+
end
|
65
|
+
|
57
66
|
def type_cast(name, value)
|
58
67
|
return value.presence unless column = column_for_attribute(name)
|
59
68
|
|
@@ -36,19 +36,21 @@ module Globalize
|
|
36
36
|
dirty[name][locale] = old
|
37
37
|
end
|
38
38
|
end
|
39
|
+
|
39
40
|
def clear_dirty
|
40
41
|
self.dirty = {}
|
41
42
|
end
|
42
43
|
|
43
44
|
def _reset_attribute name
|
44
45
|
record.send("#{name}=", record.changed_attributes[name])
|
45
|
-
record.
|
46
|
+
record.send(:clear_attribute_changes, [name])
|
46
47
|
end
|
47
48
|
|
48
49
|
def reset
|
49
50
|
clear_dirty
|
50
51
|
super
|
51
52
|
end
|
53
|
+
|
52
54
|
end
|
53
55
|
end
|
54
56
|
end
|
@@ -76,10 +76,10 @@ module Globalize
|
|
76
76
|
private
|
77
77
|
|
78
78
|
# Override the default relation method in order to return a subclass
|
79
|
-
# of ActiveRecord::Relation with custom finder
|
80
|
-
# attributes.
|
79
|
+
# of ActiveRecord::Relation with custom finder and calculation methods
|
80
|
+
# for translated attributes.
|
81
81
|
def relation
|
82
|
-
super.extending!(
|
82
|
+
super.extending!(TranslatedAttributesQuery)
|
83
83
|
end
|
84
84
|
|
85
85
|
protected
|
@@ -98,6 +98,7 @@ module Globalize
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def define_translated_attr_accessor(name)
|
101
|
+
attribute(name, ::ActiveRecord::Type::Value.new)
|
101
102
|
define_translated_attr_reader(name)
|
102
103
|
define_translated_attr_writer(name)
|
103
104
|
end
|
@@ -17,10 +17,24 @@ module Globalize
|
|
17
17
|
with_given_locale(attributes) { super(attributes.except("locale"), *options) }
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
if Globalize.rails_52?
|
21
|
+
|
22
|
+
# In Rails 5.2 we need to override *_assign_attributes* as it's called earlier
|
23
|
+
# in the stack (before *assign_attributes*)
|
24
|
+
# See https://github.com/rails/rails/blob/master/activerecord/lib/active_record/attribute_assignment.rb#L11
|
25
|
+
def _assign_attributes(new_attributes)
|
26
|
+
attributes = new_attributes.stringify_keys
|
27
|
+
with_given_locale(attributes) { super(attributes.except("locale")) }
|
28
|
+
end
|
29
|
+
|
30
|
+
else
|
31
|
+
|
32
|
+
def assign_attributes(new_attributes, *options)
|
33
|
+
super unless new_attributes.respond_to?(:stringify_keys) && new_attributes.present?
|
34
|
+
attributes = new_attributes.stringify_keys
|
35
|
+
with_given_locale(attributes) { super(attributes.except("locale"), *options) }
|
36
|
+
end
|
37
|
+
|
24
38
|
end
|
25
39
|
|
26
40
|
def write_attribute(name, value, *args, &block)
|
@@ -39,19 +53,21 @@ module Globalize
|
|
39
53
|
end
|
40
54
|
end
|
41
55
|
|
42
|
-
def read_attribute(
|
43
|
-
|
44
|
-
|
56
|
+
def read_attribute(attr_name, options = {}, &block)
|
57
|
+
name = if self.class.attribute_alias?(attr_name)
|
58
|
+
self.class.attribute_alias(attr_name).to_s
|
59
|
+
else
|
60
|
+
attr_name.to_s
|
61
|
+
end
|
45
62
|
|
46
|
-
if
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
63
|
+
name = self.class.primary_key if name == "id".freeze && self.class.primary_key
|
64
|
+
|
65
|
+
_read_attribute(name, options, &block)
|
66
|
+
end
|
67
|
+
|
68
|
+
def _read_attribute(attr_name, options = {}, &block)
|
69
|
+
translated_value = read_translated_attribute(attr_name, options, &block)
|
70
|
+
translated_value.nil? ? super(attr_name, &block) : translated_value
|
55
71
|
end
|
56
72
|
|
57
73
|
def attribute_names
|
@@ -213,6 +229,18 @@ module Globalize
|
|
213
229
|
ensure
|
214
230
|
self.fallbacks_for_empty_translations = before
|
215
231
|
end
|
232
|
+
|
233
|
+
# nil or value
|
234
|
+
def read_translated_attribute(name, options)
|
235
|
+
options = {:translated => true, :locale => nil}.merge(options)
|
236
|
+
return nil unless options[:translated]
|
237
|
+
return nil unless translated?(name)
|
238
|
+
|
239
|
+
value = globalize.fetch(options[:locale] || Globalize.locale, name)
|
240
|
+
return nil if value.nil?
|
241
|
+
|
242
|
+
block_given? ? yield(value) : value
|
243
|
+
end
|
216
244
|
end
|
217
245
|
end
|
218
246
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Globalize
|
2
2
|
module ActiveRecord
|
3
|
-
module
|
3
|
+
module TranslatedAttributesQuery
|
4
4
|
class WhereChain < ::ActiveRecord::QueryMethods::WhereChain
|
5
5
|
def not(opts, *rest)
|
6
6
|
if parsed = @scope.clone.parse_translated_conditions(opts)
|
@@ -21,6 +21,14 @@ module Globalize
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
def having(opts, *rest)
|
25
|
+
if parsed = parse_translated_conditions(opts)
|
26
|
+
join_translations(super(parsed, *rest))
|
27
|
+
else
|
28
|
+
super
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
24
32
|
def order(opts, *rest)
|
25
33
|
if respond_to?(:translated_attribute_names) && parsed = parse_translated_order(opts)
|
26
34
|
join_translations super(parsed)
|
@@ -29,6 +37,30 @@ module Globalize
|
|
29
37
|
end
|
30
38
|
end
|
31
39
|
|
40
|
+
def reorder(opts, *rest)
|
41
|
+
if respond_to?(:translated_attribute_names) && parsed = parse_translated_order(opts)
|
42
|
+
join_translations super(parsed)
|
43
|
+
else
|
44
|
+
super
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def group(*columns)
|
49
|
+
if respond_to?(:translated_attribute_names) && parsed = parse_translated_columns(columns)
|
50
|
+
join_translations super(parsed)
|
51
|
+
else
|
52
|
+
super
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def select(*columns)
|
57
|
+
if respond_to?(:translated_attribute_names) && parsed = parse_translated_columns(columns)
|
58
|
+
join_translations super(parsed)
|
59
|
+
else
|
60
|
+
super
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
32
64
|
def exists?(conditions = :none)
|
33
65
|
if parsed = parse_translated_conditions(conditions)
|
34
66
|
with_translations_in_fallbacks.exists?(parsed)
|
@@ -37,6 +69,24 @@ module Globalize
|
|
37
69
|
end
|
38
70
|
end
|
39
71
|
|
72
|
+
def calculate(*args)
|
73
|
+
column_name = args[1]
|
74
|
+
if respond_to?(:translated_attribute_names) && translated_column?(column_name)
|
75
|
+
args[1] = translated_column_name(column_name)
|
76
|
+
join_translations.calculate(*args)
|
77
|
+
else
|
78
|
+
super
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def pluck(*column_names)
|
83
|
+
if respond_to?(:translated_attribute_names) && parsed = parse_translated_columns(column_names)
|
84
|
+
join_translations.pluck(*parsed)
|
85
|
+
else
|
86
|
+
super
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
40
90
|
def with_translations_in_fallbacks
|
41
91
|
with_translations(Globalize.fallbacks)
|
42
92
|
end
|
@@ -110,11 +160,19 @@ module Globalize
|
|
110
160
|
order(ordering).order_values
|
111
161
|
when Symbol
|
112
162
|
parse_translated_order({ opts => :asc })
|
163
|
+
when Array
|
164
|
+
parse_translated_order(Hash[opts.collect { |opt| [opt, :asc] } ])
|
113
165
|
else # failsafe returns nothing
|
114
166
|
nil
|
115
167
|
end
|
116
168
|
end
|
117
169
|
|
170
|
+
def parse_translated_columns(columns)
|
171
|
+
if columns.is_a?(Array) && (columns.flatten & translated_attribute_names).present?
|
172
|
+
columns.flatten.map { |column| translated_column?(column) ? translated_column_name(column) : column }
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
118
176
|
def translated_column?(column)
|
119
177
|
translated_attribute_names.include?(column)
|
120
178
|
end
|
data/lib/globalize/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: globalize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Fuchs
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2018-
|
17
|
+
date: 2018-11-02 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: activerecord
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
version: '4.2'
|
26
26
|
- - "<"
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '5.
|
28
|
+
version: '5.3'
|
29
29
|
type: :runtime
|
30
30
|
prerelease: false
|
31
31
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -35,7 +35,7 @@ dependencies:
|
|
35
35
|
version: '4.2'
|
36
36
|
- - "<"
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: '5.
|
38
|
+
version: '5.3'
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: activemodel
|
41
41
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,7 +45,7 @@ dependencies:
|
|
45
45
|
version: '4.2'
|
46
46
|
- - "<"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '5.
|
48
|
+
version: '5.3'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '4.2'
|
56
56
|
- - "<"
|
57
57
|
- !ruby/object:Gem::Version
|
58
|
-
version: '5.
|
58
|
+
version: '5.3'
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: request_store
|
61
61
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,6 +70,20 @@ dependencies:
|
|
70
70
|
- - "~>"
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '1.0'
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: appraisal
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
type: :development
|
81
|
+
prerelease: false
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
73
87
|
- !ruby/object:Gem::Dependency
|
74
88
|
name: database_cleaner
|
75
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,6 +98,20 @@ dependencies:
|
|
84
98
|
- - ">="
|
85
99
|
- !ruby/object:Gem::Version
|
86
100
|
version: '0'
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: m
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
type: :development
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
87
115
|
- !ruby/object:Gem::Dependency
|
88
116
|
name: minitest
|
89
117
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,7 +141,7 @@ dependencies:
|
|
113
141
|
- !ruby/object:Gem::Version
|
114
142
|
version: '0'
|
115
143
|
- !ruby/object:Gem::Dependency
|
116
|
-
name:
|
144
|
+
name: pry
|
117
145
|
requirement: !ruby/object:Gem::Requirement
|
118
146
|
requirements:
|
119
147
|
- - ">="
|
@@ -140,12 +168,41 @@ dependencies:
|
|
140
168
|
- - ">="
|
141
169
|
- !ruby/object:Gem::Version
|
142
170
|
version: '0'
|
171
|
+
- !ruby/object:Gem::Dependency
|
172
|
+
name: rdoc
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
type: :development
|
179
|
+
prerelease: false
|
180
|
+
version_requirements: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
- !ruby/object:Gem::Dependency
|
186
|
+
name: sqlite3
|
187
|
+
requirement: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
type: :development
|
193
|
+
prerelease: false
|
194
|
+
version_requirements: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
143
199
|
description: Rails I18n de-facto standard library for ActiveRecord model/data translation.
|
144
200
|
email: nobody@globalize-rails.org
|
145
201
|
executables: []
|
146
202
|
extensions: []
|
147
203
|
extra_rdoc_files: []
|
148
204
|
files:
|
205
|
+
- Appraisals
|
149
206
|
- CHANGELOG.md
|
150
207
|
- CONTRIBUTING.md
|
151
208
|
- Gemfile
|
@@ -163,7 +220,7 @@ files:
|
|
163
220
|
- lib/globalize/active_record/exceptions.rb
|
164
221
|
- lib/globalize/active_record/instance_methods.rb
|
165
222
|
- lib/globalize/active_record/migration.rb
|
166
|
-
- lib/globalize/active_record/
|
223
|
+
- lib/globalize/active_record/translated_attributes_query.rb
|
167
224
|
- lib/globalize/active_record/translation.rb
|
168
225
|
- lib/globalize/interpolation.rb
|
169
226
|
- lib/globalize/version.rb
|
@@ -201,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
258
|
version: '0'
|
202
259
|
requirements: []
|
203
260
|
rubyforge_project: "[none]"
|
204
|
-
rubygems_version: 2.6
|
261
|
+
rubygems_version: 2.7.6
|
205
262
|
signing_key:
|
206
263
|
specification_version: 4
|
207
264
|
summary: Rails I18n de-facto standard library for ActiveRecord model/data translation
|