traco 3.2.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OTY3M2RiMzgxNzI2YzY5YWQ2Nzg5N2VhMmY0ZDg0YjlhOGQwMzQ1Ng==
5
- data.tar.gz: !binary |-
6
- MTI3YWIxYmRjNDQ5MmIxNWIyNmI3NGFjMWEwY2FiZWEwMjNiMWFiOA==
2
+ SHA1:
3
+ metadata.gz: 9060bececc2eb2a4f5bf6fd798f1b6c16523dd21
4
+ data.tar.gz: a32a98d4c86f84fc94430cf11ab660fe8993c973
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MGZjNTUyNzg3NDNiOWQyYjM2ZTE4NmRhOGY5Mzc3ZGJlY2ZkOWZiYzJjMTVm
10
- OTA3ZDY1ZWMxZDFmMmFkMGM4NTE4Y2I0ZjM1NTY2ODFmY2UwMzY0ZjYwZTQy
11
- YWM1N2U2OTkyNWY3YTM1OTU2NDNlMjNlNjczMTBjYmZjMzU2Yzk=
12
- data.tar.gz: !binary |-
13
- OTUyOGE2M2E0MTM3ODVhMjg1MTA3MDkzNDU3YmUwOTZhMWM5Yjg0MDJhNDU2
14
- YzVjM2JhM2E3ZjBhOWJmZTUzOWI2NWIxZTljZjA4MDUxMWUyMzkyMTUyNmI5
15
- NmRiOTdhNzA2NmU3OTVmZmM2N2U3MWQzN2NiMmIyOGUyOTU5MDg=
6
+ metadata.gz: 23d5789232d16fa41117707e3502027d4d04328adee5bf8853213dd128ed26badb14f3ad03afbe073424c58d39eb98b46be78998f87d1bf000aa0f0f0d6f9bb5
7
+ data.tar.gz: c9461bd93ed5118f51da0862ee929f93df74964c7c56371ca60d88faba043e535b632fcc504e3351c50958f14f130ca2456ad32a06652e4f3dcf5c4ca5a98b6a
@@ -1,5 +1,10 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.0
4
- - 2.0.0
5
- - 1.9.3
3
+ - 2.5.1
4
+ - 2.4.4
5
+ - 2.3.0
6
+
7
+ # Avoid some errors, and speed things up:
8
+ # https://github.com/bundler/bundler/issues/3558#issuecomment-171347979
9
+ # https://docs.travis-ci.com/user/workers/container-based-infrastructure/
10
+ sudo: false
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.0.0
4
+
5
+ * Drop support for end-of-lifed Ruby 2.1 and 2.2.
6
+
7
+ ## 3.3.0
8
+
9
+ * Traco now automatically adds query methods, e.g. `Item#title?` when `title` is translated.
10
+
11
+ ## 3.2.2
12
+
13
+ * Internal cleanup.
14
+
3
15
  ## 3.2.1
4
16
 
5
17
  * Bugfix: with `fallback: [:sv]`, always look at current locale before any fallbacks.
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://secure.travis-ci.org/barsoom/traco.png)](http://travis-ci.org/barsoom/traco)
4
4
 
5
- Translatable attributes for Rails 3 and 4 (Ruby 1.9+), stored in the model table itself.
5
+ Translatable attributes for Ruby on Rails, stored in the model table itself.
6
6
 
7
7
  Inspired by Iain Hecker's [translatable_columns](https://github.com/iain/translatable_columns/).
8
8
 
@@ -46,6 +46,8 @@ You can still use your accessors like `title_sv` and `title_sv=` in forms, valid
46
46
 
47
47
  `#title=`: Assigns the title to the column for the current locale, if present. Raises if the column doesn't exist.
48
48
 
49
+ `#title?`: Is the title present? Respects the Traco [fallback](#fallbacks) setting.
50
+
49
51
  `.human_attribute_name(:title_sv)`: Extends this standard method to return "Title (Swedish)" if you have a translation key `i18n.languages.sv = "Swedish"` and "Title (SV)" otherwise. Rails uses this method to build validation error messages and form labels.
50
52
 
51
53
  `.translatable_attributes`: Returns an array like `[:title, :body]`.
@@ -120,7 +122,7 @@ end
120
122
  Add this to your `Gemfile`:
121
123
 
122
124
  ```ruby
123
- gem 'traco'
125
+ gem "traco"
124
126
  ```
125
127
 
126
128
  Then run
@@ -7,6 +7,7 @@ module Traco
7
7
  attributes.each do |attribute|
8
8
  define_reader(attribute)
9
9
  define_writer(attribute)
10
+ define_query(attribute)
10
11
  end
11
12
  end
12
13
 
@@ -25,7 +26,7 @@ module Traco
25
26
  default_fallback = #{@options.fetch(:fallback, LocaleFallbacks::DEFAULT_FALLBACK).inspect}
26
27
  fallback = options.fetch(:fallback, default_fallback)
27
28
 
28
- columns_to_try = self.class._locale_columns_for_attribute(:#{attribute}, fallback)
29
+ columns_to_try = self.class._locale_columns_for_attribute(:#{attribute}, fallback: fallback)
29
30
  columns_to_try.each do |column|
30
31
  value = send(column)
31
32
  return value if value.present?
@@ -45,6 +46,14 @@ module Traco
45
46
  EOM
46
47
  end
47
48
 
49
+ def define_query(attribute)
50
+ class_eval <<-EOM, __FILE__, __LINE__ + 1
51
+ def #{attribute}?
52
+ #{attribute}.present?
53
+ end
54
+ EOM
55
+ end
56
+
48
57
  # Only called once per class or inheritance chain (e.g. once
49
58
  # for the superclass, not at all for subclasses). The separation
50
59
  # is important if we don't want to overwrite values if running
@@ -1,18 +1,18 @@
1
1
  module Traco
2
2
  module ClassMethods
3
3
  def locales_for_attribute(attribute)
4
- traco_cache(attribute, LocaleFallbacks::DEFAULT_FIRST_FALLBACK).keys
4
+ traco_cache(attribute, fallback: LocaleFallbacks::DEFAULT_FIRST_FALLBACK).keys
5
5
  end
6
6
 
7
7
  def locale_columns(*attributes)
8
8
  attributes.each_with_object([]) do |attribute, columns|
9
- columns.concat(_locale_columns_for_attribute(attribute, LocaleFallbacks::DEFAULT_FIRST_FALLBACK))
9
+ columns.concat(_locale_columns_for_attribute(attribute, fallback: LocaleFallbacks::DEFAULT_FIRST_FALLBACK))
10
10
  end
11
11
  end
12
12
 
13
13
  # Consider this method internal.
14
- def _locale_columns_for_attribute(attribute, fallback)
15
- traco_cache(attribute, fallback).values
14
+ def _locale_columns_for_attribute(attribute, fallback:)
15
+ traco_cache(attribute, fallback: fallback).values
16
16
  end
17
17
 
18
18
  def current_locale_column(attribute)
@@ -52,7 +52,7 @@ module Traco
52
52
  # }
53
53
  # }
54
54
  # }
55
- def traco_cache(attribute, fallback)
55
+ def traco_cache(attribute, fallback:)
56
56
  cache = @traco_cache ||= {}
57
57
  per_locale_cache = cache[I18n.locale] ||= {}
58
58
  per_attribute_cache = per_locale_cache[attribute] ||= {}
@@ -1,3 +1,3 @@
1
1
  module Traco
2
- VERSION = "3.2.1"
2
+ VERSION = "4.0.0"
3
3
  end
@@ -1,7 +1,6 @@
1
1
  require "i18n"
2
2
 
3
3
  RSpec.configure do |config|
4
- config.treat_symbols_as_metadata_keys_with_true_values = true
5
4
  config.filter_run focus: true
6
5
  config.run_all_when_everything_filtered = true
7
6
  end
@@ -19,12 +19,10 @@ require "app/post.rb"
19
19
 
20
20
  ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
21
21
 
22
- silence_stream(STDOUT) do
23
- ActiveRecord::Schema.define(version: 0) do
24
- create_table :posts, force: true do |t|
25
- t.string :title_sv, :title_en, :title_pt_br
26
- t.string :body_sv, :body_en, :body_pt_br
27
- end
22
+ ActiveRecord::Schema.define(version: 0) do
23
+ create_table :posts, force: true do |t|
24
+ t.string :title_sv, :title_en, :title_pt_br
25
+ t.string :body_sv, :body_en, :body_pt_br
28
26
  end
29
27
  end
30
28
 
@@ -298,6 +298,23 @@ describe Post, "#title=" do
298
298
  end
299
299
  end
300
300
 
301
+ describe Post, "#title?" do
302
+ before do
303
+ Post.translates :title
304
+ I18n.locale = :sv
305
+ I18n.default_locale = :en
306
+ end
307
+
308
+ it "is true if the title is present" do
309
+ post = Post.new(title_sv: "", title_en: " ", title_pt_br: nil)
310
+ expect(post.title?).to be false
311
+
312
+ post.title_en = "Hello"
313
+
314
+ expect(post.title?).to be true
315
+ end
316
+ end
317
+
301
318
  describe Post, ".human_attribute_name" do
302
319
  before do
303
320
  Post.translates :title
@@ -16,6 +16,8 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
18
 
19
+ s.required_ruby_version = ">= 2.3.0"
20
+
19
21
  s.add_dependency "activerecord", ">= 3.0"
20
22
 
21
23
  s.add_development_dependency "sqlite3"
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traco
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrik Nyh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-14 00:00:00.000000000 Z
11
+ date: 2018-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sqlite3
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  description:
@@ -73,9 +73,8 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - .gitignore
77
- - .rvmrc
78
- - .travis.yml
76
+ - ".gitignore"
77
+ - ".travis.yml"
79
78
  - CHANGELOG.md
80
79
  - Gemfile
81
80
  - LICENSE.txt
@@ -105,17 +104,17 @@ require_paths:
105
104
  - lib
106
105
  required_ruby_version: !ruby/object:Gem::Requirement
107
106
  requirements:
108
- - - ! '>='
107
+ - - ">="
109
108
  - !ruby/object:Gem::Version
110
- version: '0'
109
+ version: 2.3.0
111
110
  required_rubygems_version: !ruby/object:Gem::Requirement
112
111
  requirements:
113
- - - ! '>='
112
+ - - ">="
114
113
  - !ruby/object:Gem::Version
115
114
  version: '0'
116
115
  requirements: []
117
116
  rubyforge_project:
118
- rubygems_version: 2.2.2
117
+ rubygems_version: 2.6.11
119
118
  signing_key:
120
119
  specification_version: 4
121
120
  summary: Translatable columns for Rails 3 or better, stored in the model table itself.
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm ruby-1.9.3-p194-falcon@traco --create