hstore_translate 0.0.14 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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