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 CHANGED
@@ -1,7 +1,7 @@
1
- ---
2
- SHA1:
3
- metadata.gz: cf335ea8fee1372bf9cc32b3ad3c046795dd6640
4
- data.tar.gz: 6fae38f89cccbcf983a0844f0515e901d0fb6ea1
5
- SHA512:
6
- metadata.gz: 514544c0ae6787c5ac08eb7240838ff050ff567a3f113f5f18202ebd7f7592b6bc94b62c1c3fad87f19a4438b2bad58fe569451f5e7bdf1c0e85314f0bc1b533
7
- data.tar.gz: 09293243be9d6a2ba0e56dadc597f9e13c39275bea302e6438e31fd2dbae48080d59ef414b6b3eab7bfb3a07d47231861bc59cd45a4cbba4ae11ceefbde76af9
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
  [![Build Status](https://api.travis-ci.org/robworley/hstore_translate.png)](https://travis-ci.org/robworley/hstore_translate)
9
+ [![License](http://img.shields.io/badge/license-mit-brightgreen.svg)](COPYRIGHT)
10
+ [![Code Climate](https://codeclimate.com/github/robworley/hstore_translate.png)](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
- @disable_fallback = true
37
+ def disable_fallback(&block)
38
+ toggle_fallback(enabled = false, &block)
39
39
  end
40
40
 
41
- def enable_fallback
42
- @disable_fallback = false
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 !!@disable_fallback || !I18n.respond_to?(:fallbacks)
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
@@ -1,3 +1,3 @@
1
1
  module HstoreTranslate
2
- VERSION = "0.0.14"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -4,4 +4,3 @@ gemspec :path => './../..'
4
4
  gem 'pg'
5
5
  gem 'activerecord', '~> 3.1.0'
6
6
  gem 'activerecord-postgres-hstore', '~> 0.7.0'
7
- gem 'rubysl', '~> 2.0', :platform => :rbx
@@ -4,4 +4,3 @@ gemspec :path => './../..'
4
4
  gem 'pg'
5
5
  gem 'activerecord', '~> 3.2.0'
6
6
  gem 'activerecord-postgres-hstore', '~> 0.7.0'
7
- gem 'rubysl', '~> 2.0', :platform => :rbx
@@ -4,4 +4,3 @@ gemspec :path => './../..'
4
4
  gem 'activerecord', '~> 4.0.0'
5
5
  gem 'pg', :platform => :ruby
6
6
  gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
7
- gem 'rubysl', '~> 2.0', :platform => :rbx
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec :path => './../..'
3
+
4
+ gem 'activerecord', '~> 4.1.0'
5
+ gem 'pg', :platform => :ruby
6
+ gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
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 < MiniTest::Unit::TestCase
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
 
@@ -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.14
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
- date: 2014-02-02 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
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
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
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
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: '4.0'
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
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
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
- files:
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
- require_paths:
81
+
82
+ require_paths:
95
83
  - lib
96
- required_ruby_version: !ruby/object:Gem::Requirement
97
- requirements:
98
- - - '>='
99
- - !ruby/object:Gem::Version
100
- version: '0'
101
- required_rubygems_version: !ruby/object:Gem::Requirement
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.1.11
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
- hstore datatype.
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/test_helper.rb
119
- - test/translates_test.rb
104
+ - test/gemfiles/Gemfile.rails-4.1.x