hstore_translate 0.0.14 → 1.0.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 +7 -7
- data/README.md +21 -3
- data/lib/hstore_translate/translates.rb +19 -5
- data/lib/hstore_translate/version.rb +1 -1
- data/test/gemfiles/Gemfile.rails-3.1.x +0 -1
- data/test/gemfiles/Gemfile.rails-3.2.x +0 -1
- data/test/gemfiles/Gemfile.rails-4.0.x +0 -1
- data/test/gemfiles/Gemfile.rails-4.1.x +6 -0
- data/test/test_helper.rb +5 -1
- data/test/translates_test.rb +22 -0
- metadata +63 -78
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3d045d9ab64030c7dfb5ff92821e38aa427d670a
|
4
|
+
data.tar.gz: 54d112f243c3bc7321bea17051e9c10281427ad7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 04cacc0423c75b17e8162aef3c371eba9b9f7e71d9bb41f8d201a827446f04578d180056e6397a6899faafcdf426cc5e7ebae878c68c2d8512edd89e78e588bc
|
7
|
+
data.tar.gz: fef04d9b61e0023728cad3caa080ba6e3d00b194775101ca5476aee3ac1a3c42bee0660ba9bc2db844891d252ce84aa62d3c636be0aeea4ae81f0433b7fb4076
|
data/README.md
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
# hstore_translate
|
2
2
|
|
3
|
-
Rails I18n library for ActiveRecord model/data translation using PostgreSQL's
|
4
|
-
hstore datatype. It provides an interface inspired by
|
5
|
-
[Globalize3](https://github.com/svenfuchs/globalize3) but removes the need to
|
3
|
+
Rails I18n library for ActiveRecord model/data translation using PostgreSQL's
|
4
|
+
hstore datatype. It provides an interface inspired by
|
5
|
+
[Globalize3](https://github.com/svenfuchs/globalize3) but removes the need to
|
6
6
|
maintain separate translation tables.
|
7
7
|
|
8
8
|
[](https://travis-ci.org/robworley/hstore_translate)
|
9
|
+
[](COPYRIGHT)
|
10
|
+
[](https://codeclimate.com/github/robworley/hstore_translate)
|
9
11
|
|
10
12
|
## Requirements
|
11
13
|
|
@@ -124,3 +126,19 @@ post.title # => This database rocks!
|
|
124
126
|
post.disable_fallback
|
125
127
|
post.title_nl # => nil
|
126
128
|
```
|
129
|
+
|
130
|
+
You can also call your code into a block that temporarily disable or enable fallbacks.
|
131
|
+
|
132
|
+
```ruby
|
133
|
+
I18n.locale = :en
|
134
|
+
post.title_nl # => This database rocks!
|
135
|
+
|
136
|
+
post.disable_fallback do
|
137
|
+
post.title_nl # => nil
|
138
|
+
end
|
139
|
+
|
140
|
+
post.disable_fallback
|
141
|
+
post.enable_fallback do
|
142
|
+
post.title_nl # => This database rocks!
|
143
|
+
end
|
144
|
+
```
|
@@ -34,18 +34,18 @@ module HstoreTranslate
|
|
34
34
|
end
|
35
35
|
|
36
36
|
module InstanceMethods
|
37
|
-
def disable_fallback
|
38
|
-
|
37
|
+
def disable_fallback(&block)
|
38
|
+
toggle_fallback(enabled = false, &block)
|
39
39
|
end
|
40
40
|
|
41
|
-
def enable_fallback
|
42
|
-
|
41
|
+
def enable_fallback(&block)
|
42
|
+
toggle_fallback(enabled = true, &block)
|
43
43
|
end
|
44
44
|
|
45
45
|
protected
|
46
46
|
|
47
47
|
def hstore_translate_fallback_locales(locale)
|
48
|
-
return if
|
48
|
+
return if @enabled_fallback == false || !I18n.respond_to?(:fallbacks)
|
49
49
|
I18n.fallbacks[locale]
|
50
50
|
end
|
51
51
|
|
@@ -117,6 +117,20 @@ module HstoreTranslate
|
|
117
117
|
|
118
118
|
[translated_attr_name, locale, assigning]
|
119
119
|
end
|
120
|
+
|
121
|
+
def toggle_fallback(enabled, &block)
|
122
|
+
if block_given?
|
123
|
+
old_value = @enabled_fallback
|
124
|
+
begin
|
125
|
+
@enabled_fallback = enabled
|
126
|
+
yield
|
127
|
+
ensure
|
128
|
+
@enabled_fallback = old_value
|
129
|
+
end
|
130
|
+
else
|
131
|
+
@enabled_fallback = enabled
|
132
|
+
end
|
133
|
+
end
|
120
134
|
end
|
121
135
|
end
|
122
136
|
end
|
data/test/test_helper.rb
CHANGED
@@ -4,11 +4,13 @@ require 'hstore_translate'
|
|
4
4
|
require 'database_cleaner'
|
5
5
|
DatabaseCleaner.strategy = :transaction
|
6
6
|
|
7
|
+
MiniTest::Test = MiniTest::Unit::TestCase unless MiniTest.const_defined?(:Test) # Rails 4.0.x
|
8
|
+
|
7
9
|
class Post < ActiveRecord::Base
|
8
10
|
translates :title
|
9
11
|
end
|
10
12
|
|
11
|
-
class HstoreTranslate::Test <
|
13
|
+
class HstoreTranslate::Test < Minitest::Test
|
12
14
|
class << self
|
13
15
|
def prepare_database
|
14
16
|
create_database
|
@@ -60,6 +62,8 @@ class HstoreTranslate::Test < MiniTest::Unit::TestCase
|
|
60
62
|
prepare_database
|
61
63
|
|
62
64
|
def setup
|
65
|
+
I18n.available_locales = ['en', 'en-US', 'fr']
|
66
|
+
I18n.config.enforce_available_locales = true
|
63
67
|
DatabaseCleaner.start
|
64
68
|
end
|
65
69
|
|
data/test/translates_test.rb
CHANGED
@@ -81,6 +81,17 @@ class TranslatesTest < HstoreTranslate::Test
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
def test_retrieves_in_specified_locale_with_fallback_disabled_using_a_block
|
85
|
+
I18n::Backend::Simple.include(I18n::Backend::Fallbacks)
|
86
|
+
I18n.default_locale = :"en-US"
|
87
|
+
|
88
|
+
p = Post.new(:title_translations => { "en" => "English Title" })
|
89
|
+
p.enable_fallback
|
90
|
+
|
91
|
+
assert_equal("English Title", p.title_fr)
|
92
|
+
p.disable_fallback { assert_nil p.title_fr }
|
93
|
+
end
|
94
|
+
|
84
95
|
def test_retrieves_in_specified_locale_with_fallback_reenabled
|
85
96
|
I18n::Backend::Simple.include(I18n::Backend::Fallbacks)
|
86
97
|
I18n.default_locale = :"en-US"
|
@@ -93,6 +104,17 @@ class TranslatesTest < HstoreTranslate::Test
|
|
93
104
|
end
|
94
105
|
end
|
95
106
|
|
107
|
+
def test_retrieves_in_specified_locale_with_fallback_reenabled_using_a_block
|
108
|
+
I18n::Backend::Simple.include(I18n::Backend::Fallbacks)
|
109
|
+
I18n.default_locale = :"en-US"
|
110
|
+
|
111
|
+
p = Post.new(:title_translations => { "en" => "English Title" })
|
112
|
+
p.disable_fallback
|
113
|
+
|
114
|
+
assert_nil(p.title_fr)
|
115
|
+
p.enable_fallback { assert_equal("English Title", p.title_fr) }
|
116
|
+
end
|
117
|
+
|
96
118
|
def test_method_missing_delegates
|
97
119
|
assert_raises(NoMethodError) { Post.new.nonexistant_method }
|
98
120
|
end
|
metadata
CHANGED
@@ -1,119 +1,104 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: hstore_translate
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Rob Worley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
date: 2014-04-10 00:00:00 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
14
15
|
name: activerecord
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 3.1.0
|
20
|
-
type: :runtime
|
21
16
|
prerelease: false
|
22
|
-
|
23
|
-
requirements:
|
24
|
-
- -
|
25
|
-
- !ruby/object:Gem::Version
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ">="
|
20
|
+
- !ruby/object:Gem::Version
|
26
21
|
version: 3.1.0
|
27
|
-
|
22
|
+
type: :runtime
|
23
|
+
version_requirements: *id001
|
24
|
+
- !ruby/object:Gem::Dependency
|
28
25
|
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
26
|
prerelease: false
|
36
|
-
|
37
|
-
requirements:
|
38
|
-
-
|
39
|
-
-
|
40
|
-
|
41
|
-
|
42
|
-
name: minitest
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ~>
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '4.0'
|
27
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- &id004
|
30
|
+
- ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: "0"
|
48
33
|
type: :development
|
34
|
+
version_requirements: *id002
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: minitest
|
49
37
|
prerelease: false
|
50
|
-
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: database_cleaner
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
38
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: "4.0"
|
62
43
|
type: :development
|
44
|
+
version_requirements: *id003
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: database_cleaner
|
63
47
|
prerelease: false
|
64
|
-
|
65
|
-
requirements:
|
66
|
-
-
|
67
|
-
|
68
|
-
|
69
|
-
description: Rails I18n library for ActiveRecord model/data translation using PostgreSQL's
|
70
|
-
hstore datatype. Translations are stored directly in the model table rather than
|
71
|
-
shadow tables.
|
48
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- *id004
|
51
|
+
type: :development
|
52
|
+
version_requirements: *id005
|
53
|
+
description: Rails I18n library for ActiveRecord model/data translation using PostgreSQL's hstore datatype. Translations are stored directly in the model table rather than shadow tables.
|
72
54
|
email: robert.worley@gmail.com
|
73
55
|
executables: []
|
56
|
+
|
74
57
|
extensions: []
|
58
|
+
|
75
59
|
extra_rdoc_files: []
|
76
|
-
|
60
|
+
|
61
|
+
files:
|
62
|
+
- MIT-LICENSE
|
63
|
+
- README.md
|
64
|
+
- lib/hstore_translate.rb
|
77
65
|
- lib/hstore_translate/translates.rb
|
78
66
|
- lib/hstore_translate/version.rb
|
79
|
-
- lib/hstore_translate.rb
|
80
|
-
- README.md
|
81
|
-
- MIT-LICENSE
|
82
67
|
- test/database.yml
|
83
68
|
- test/gemfiles/Gemfile.rails-3.1.x
|
84
69
|
- test/gemfiles/Gemfile.rails-3.2.x
|
85
70
|
- test/gemfiles/Gemfile.rails-4.0.x
|
71
|
+
- test/gemfiles/Gemfile.rails-4.1.x
|
86
72
|
- test/test_helper.rb
|
87
73
|
- test/translates_test.rb
|
88
74
|
homepage: https://github.com/robworley/hstore_translate
|
89
|
-
licenses:
|
75
|
+
licenses:
|
90
76
|
- MIT
|
91
77
|
metadata: {}
|
78
|
+
|
92
79
|
post_install_message:
|
93
80
|
rdoc_options: []
|
94
|
-
|
81
|
+
|
82
|
+
require_paths:
|
95
83
|
- lib
|
96
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
-
requirements:
|
98
|
-
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
requirements:
|
103
|
-
- - '>='
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '0'
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- *id004
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- *id004
|
106
90
|
requirements: []
|
91
|
+
|
107
92
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
93
|
+
rubygems_version: 2.2.2
|
109
94
|
signing_key:
|
110
95
|
specification_version: 4
|
111
|
-
summary: Rails I18n library for ActiveRecord model/data translation using PostgreSQL's
|
112
|
-
|
113
|
-
test_files:
|
96
|
+
summary: Rails I18n library for ActiveRecord model/data translation using PostgreSQL's hstore datatype.
|
97
|
+
test_files:
|
114
98
|
- test/database.yml
|
99
|
+
- test/test_helper.rb
|
100
|
+
- test/translates_test.rb
|
115
101
|
- test/gemfiles/Gemfile.rails-3.1.x
|
116
102
|
- test/gemfiles/Gemfile.rails-3.2.x
|
117
103
|
- test/gemfiles/Gemfile.rails-4.0.x
|
118
|
-
- test/
|
119
|
-
- test/translates_test.rb
|
104
|
+
- test/gemfiles/Gemfile.rails-4.1.x
|