rails-translate-models 0.0.2 → 0.0.3

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.
data/Gemfile CHANGED
@@ -1,12 +1,12 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "activerecord", ">= 3.0"
3
+ gem "rails", ">= 3.0"
4
4
 
5
5
  # Add dependencies to develop your gem here.
6
6
  # Include everything needed to run rake, tests, features, etc.
7
7
  group :development do
8
- gem "shoulda", ">= 0"
9
8
  gem "bundler", "~> 1.0.0"
10
9
  gem "jeweler", "~> 1.6.4"
11
- gem "rcov", ">= 0"
10
+ gem 'sqlite3'
11
+ gem "minitest"
12
12
  end
data/Gemfile.lock CHANGED
@@ -1,6 +1,20 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ actionmailer (3.1.3)
5
+ actionpack (= 3.1.3)
6
+ mail (~> 2.3.0)
7
+ actionpack (3.1.3)
8
+ activemodel (= 3.1.3)
9
+ activesupport (= 3.1.3)
10
+ builder (~> 3.0.0)
11
+ erubis (~> 2.7.0)
12
+ i18n (~> 0.6)
13
+ rack (~> 1.3.5)
14
+ rack-cache (~> 1.1)
15
+ rack-mount (~> 0.8.2)
16
+ rack-test (~> 0.6.1)
17
+ sprockets (~> 2.0.3)
4
18
  activemodel (3.1.3)
5
19
  activesupport (= 3.1.3)
6
20
  builder (~> 3.0.0)
@@ -10,28 +24,75 @@ GEM
10
24
  activesupport (= 3.1.3)
11
25
  arel (~> 2.2.1)
12
26
  tzinfo (~> 0.3.29)
27
+ activeresource (3.1.3)
28
+ activemodel (= 3.1.3)
29
+ activesupport (= 3.1.3)
13
30
  activesupport (3.1.3)
14
31
  multi_json (~> 1.0)
15
32
  arel (2.2.1)
16
33
  builder (3.0.0)
34
+ erubis (2.7.0)
17
35
  git (1.2.5)
36
+ hike (1.2.1)
18
37
  i18n (0.6.0)
19
38
  jeweler (1.6.4)
20
39
  bundler (~> 1.0)
21
40
  git (>= 1.2.5)
22
41
  rake
42
+ json (1.6.4)
43
+ mail (2.3.0)
44
+ i18n (>= 0.4.0)
45
+ mime-types (~> 1.16)
46
+ treetop (~> 1.4.8)
47
+ mime-types (1.17.2)
48
+ minitest (2.10.0)
23
49
  multi_json (1.0.4)
50
+ polyglot (0.3.3)
51
+ rack (1.3.6)
52
+ rack-cache (1.1)
53
+ rack (>= 0.4)
54
+ rack-mount (0.8.3)
55
+ rack (>= 1.0.0)
56
+ rack-ssl (1.3.2)
57
+ rack
58
+ rack-test (0.6.1)
59
+ rack (>= 1.0)
60
+ rails (3.1.3)
61
+ actionmailer (= 3.1.3)
62
+ actionpack (= 3.1.3)
63
+ activerecord (= 3.1.3)
64
+ activeresource (= 3.1.3)
65
+ activesupport (= 3.1.3)
66
+ bundler (~> 1.0)
67
+ railties (= 3.1.3)
68
+ railties (3.1.3)
69
+ actionpack (= 3.1.3)
70
+ activesupport (= 3.1.3)
71
+ rack-ssl (~> 1.3.2)
72
+ rake (>= 0.8.7)
73
+ rdoc (~> 3.4)
74
+ thor (~> 0.14.6)
24
75
  rake (0.9.2.2)
25
- rcov (0.9.11)
26
- shoulda (2.11.3)
76
+ rdoc (3.12)
77
+ json (~> 1.4)
78
+ sprockets (2.0.3)
79
+ hike (~> 1.2)
80
+ rack (~> 1.0)
81
+ tilt (~> 1.1, != 1.3.0)
82
+ sqlite3 (1.3.5)
83
+ thor (0.14.6)
84
+ tilt (1.3.3)
85
+ treetop (1.4.10)
86
+ polyglot
87
+ polyglot (>= 0.3.1)
27
88
  tzinfo (0.3.31)
28
89
 
29
90
  PLATFORMS
30
91
  ruby
31
92
 
32
93
  DEPENDENCIES
33
- activerecord (>= 3.0)
34
94
  bundler (~> 1.0.0)
35
95
  jeweler (~> 1.6.4)
36
- rcov
37
- shoulda
96
+ minitest
97
+ rails (>= 3.0)
98
+ sqlite3
data/README.rdoc CHANGED
@@ -61,7 +61,7 @@ Or you can also get any other language using in_language_code for each attribute
61
61
  a.title_in_en
62
62
  => "example title"
63
63
 
64
- Note that if the current language doesn't have a translation it always tries to fallback to english then returns nil if it's also not available.
64
+ Note that if the current language doesn't have a translation it always tries to fallback to default locale (I18n.default_locale) then returns nil if it's also not available.
65
65
 
66
66
  To create a new object.
67
67
 
@@ -99,11 +99,9 @@ Here's a simple example to make a form to edit the example article model in all
99
99
  form.html.erb
100
100
 
101
101
  <%= form_for @article do |f| %>
102
- <div class="panes">
103
- <% I18n.available_locales.each do |locale| %>
104
- <%= render "form_translations", {:f => f, :locale => locale } %>
105
- <% end %>
106
- </div>
102
+ <% I18n.available_locales.each do |locale| %>
103
+ <%= render "form_translations", {:f => f, :locale => locale } %>
104
+ <% end %>
107
105
  <% end %>
108
106
 
109
107
  _form_translations.html.erb partial
@@ -118,9 +116,18 @@ _form_translations.html.erb partial
118
116
 
119
117
  It's an initial implementation for a work in progress project, it's just an initial release but does the basic stuff I need. Help is welcome ;)
120
118
 
121
- * make tests
122
119
  * translations models generators
120
+ * fallback as an option
121
+ * complete tests? (now there's some basic testing with minitest)
123
122
 
123
+ == Similar projects
124
+
125
+ Not convinced or need a different approach? Try out:
126
+
127
+ * has_translations (https://github.com/dmitry/has_translations)
128
+ * translated_attributes (https://github.com/grosser/translated_attributes)
129
+ * rails-translate (https://github.com/fesplugas/rails-translate)
130
+ * globalize2 (https://github.com/joshmh/globalize2)
124
131
 
125
132
 
126
133
 
data/Rakefile CHANGED
@@ -32,14 +32,6 @@ Rake::TestTask.new(:test) do |test|
32
32
  test.verbose = true
33
33
  end
34
34
 
35
- require 'rcov/rcovtask'
36
- Rcov::RcovTask.new do |test|
37
- test.libs << 'test'
38
- test.pattern = 'test/**/test_*.rb'
39
- test.verbose = true
40
- test.rcov_opts << '--exclude "gems/*"'
41
- end
42
-
43
35
  task :default => :test
44
36
 
45
37
  require 'rake/rdoctask'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -56,8 +56,8 @@ module RailsTranslateModels
56
56
  translated_value = if locale
57
57
  translated_attributes_for(locale)[attribute]
58
58
  else
59
- # find translated attribute, first try current locale, then english
60
- text = translated_attributes_for(I18n.locale)[attribute] || translated_attributes_for("en")[attribute]
59
+ # find translated attribute, first try current locale, then default_locale
60
+ text = translated_attributes_for(I18n.locale)[attribute] || translated_attributes_for(I18n.default_locale)[attribute]
61
61
  end
62
62
  end
63
63
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rails-translate-models"
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Francesc Pla"]
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
26
26
  "VERSION",
27
27
  "lib/rails-translate-models.rb",
28
28
  "rails-translate-models.gemspec",
29
- "test/helper.rb",
30
29
  "test/test_rails-translate-models.rb"
31
30
  ]
32
31
  s.homepage = "http://github.com/francesc/rails-translate-models"
@@ -39,24 +38,24 @@ Gem::Specification.new do |s|
39
38
  s.specification_version = 3
40
39
 
41
40
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
- s.add_runtime_dependency(%q<activerecord>, [">= 3.0"])
43
- s.add_development_dependency(%q<shoulda>, [">= 0"])
41
+ s.add_runtime_dependency(%q<rails>, [">= 3.0"])
44
42
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
45
43
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
46
- s.add_development_dependency(%q<rcov>, [">= 0"])
44
+ s.add_development_dependency(%q<sqlite3>, [">= 0"])
45
+ s.add_development_dependency(%q<minitest>, [">= 0"])
47
46
  else
48
- s.add_dependency(%q<activerecord>, [">= 3.0"])
49
- s.add_dependency(%q<shoulda>, [">= 0"])
47
+ s.add_dependency(%q<rails>, [">= 3.0"])
50
48
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
51
49
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
52
- s.add_dependency(%q<rcov>, [">= 0"])
50
+ s.add_dependency(%q<sqlite3>, [">= 0"])
51
+ s.add_dependency(%q<minitest>, [">= 0"])
53
52
  end
54
53
  else
55
- s.add_dependency(%q<activerecord>, [">= 3.0"])
56
- s.add_dependency(%q<shoulda>, [">= 0"])
54
+ s.add_dependency(%q<rails>, [">= 3.0"])
57
55
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
58
56
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
59
- s.add_dependency(%q<rcov>, [">= 0"])
57
+ s.add_dependency(%q<sqlite3>, [">= 0"])
58
+ s.add_dependency(%q<minitest>, [">= 0"])
60
59
  end
61
60
  end
62
61
 
@@ -1,7 +1,99 @@
1
- require 'helper'
1
+ # coding: UTF-8
2
2
 
3
- class TestRailsTranslateModels < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+
13
+ require 'minitest/autorun'
14
+ require 'active_record'
15
+
16
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
17
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
18
+ require 'rails-translate-models'
19
+
20
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
21
+
22
+ def setup_db
23
+ silence_stream(STDOUT) do
24
+ ActiveRecord::Schema.define(:version => 1) do
25
+ create_table :articles, :force => true do |t|
26
+ t.timestamps
27
+ end
28
+ end
29
+
30
+ ActiveRecord::Schema.define(:version => 1) do
31
+ create_table :article_translations, :force => true do |t|
32
+ t.integer :article_id
33
+ t.string :language_code
34
+ t.string :title
35
+ t.text :body
36
+ t.timestamps
37
+ end
38
+ end
6
39
  end
7
40
  end
41
+
42
+ class Article < ActiveRecord::Base
43
+ has_translations :title, :body
44
+ end
45
+
46
+ class RailsTranslateModelsTest < MiniTest::Unit::TestCase
47
+
48
+ def setup
49
+
50
+ setup_db
51
+
52
+ Article.create :title_in_en => "Title",
53
+ :title_in_es => "Título",
54
+ :body_in_en => "Content",
55
+ :body_in_es => "Contenido",
56
+ :created_at => Time.now - 60
57
+
58
+ Article.create :title_in_en => "Second title",
59
+ :title_in_es => "Segundo título",
60
+ :body_in_en => "Second content",
61
+ :body_in_es => "Segundo contenido",
62
+ :created_at => Time.now
63
+
64
+ I18n.default_locale = :en
65
+ I18n.locale = :en
66
+
67
+ end
68
+
69
+ def teardown
70
+ ActiveRecord::Base.connection.tables.each do |table|
71
+ ActiveRecord::Base.connection.drop_table(table)
72
+ end
73
+ end
74
+
75
+ def test_should_get_title_in_en_of_the_article
76
+ article = Article.first
77
+ assert_equal article.send('title_in_en'), article.title
78
+ end
79
+
80
+ def test_should_get_title_in_es_of_the_article
81
+ I18n.locale = :es
82
+ article = Article.first
83
+ assert_equal article.send('title_in_es'), article.title
84
+ end
85
+
86
+ def test_should_return_title_in_es_as_fallback_locale
87
+ I18n.default_locale = :es
88
+ I18n.locale = :undefined
89
+ article = Article.first
90
+ assert_equal article.send('title_in_es'), article.title
91
+ end
92
+
93
+ def test_wrong_method_should_raise_nomethod_error
94
+ assert_raises NoMethodError do
95
+ Article.foo_bar
96
+ end
97
+ end
98
+
99
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-translate-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,8 +12,8 @@ cert_chain: []
12
12
  date: 2011-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: activerecord
16
- requirement: &70217636464000 !ruby/object:Gem::Requirement
15
+ name: rails
16
+ requirement: &70323455271460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,43 +21,43 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70217636464000
24
+ version_requirements: *70323455271460
25
25
  - !ruby/object:Gem::Dependency
26
- name: shoulda
27
- requirement: &70217636497720 !ruby/object:Gem::Requirement
26
+ name: bundler
27
+ requirement: &70323455270960 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
- - - ! '>='
30
+ - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70217636497720
35
+ version_requirements: *70323455270960
36
36
  - !ruby/object:Gem::Dependency
37
- name: bundler
38
- requirement: &70217636496240 !ruby/object:Gem::Requirement
37
+ name: jeweler
38
+ requirement: &70323455270480 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 1.0.0
43
+ version: 1.6.4
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70217636496240
46
+ version_requirements: *70323455270480
47
47
  - !ruby/object:Gem::Dependency
48
- name: jeweler
49
- requirement: &70217636491800 !ruby/object:Gem::Requirement
48
+ name: sqlite3
49
+ requirement: &70323455269980 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
- - - ~>
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.6.4
54
+ version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70217636491800
57
+ version_requirements: *70323455269980
58
58
  - !ruby/object:Gem::Dependency
59
- name: rcov
60
- requirement: &70217636521040 !ruby/object:Gem::Requirement
59
+ name: minitest
60
+ requirement: &70323455269420 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70217636521040
68
+ version_requirements: *70323455269420
69
69
  description: Simple gem to translate multi-lingual content in Rails models in separate
70
70
  tables for each model (modelname_translations)
71
71
  email: francesc@francesc.net
@@ -84,7 +84,6 @@ files:
84
84
  - VERSION
85
85
  - lib/rails-translate-models.rb
86
86
  - rails-translate-models.gemspec
87
- - test/helper.rb
88
87
  - test/test_rails-translate-models.rb
89
88
  homepage: http://github.com/francesc/rails-translate-models
90
89
  licenses:
@@ -101,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
100
  version: '0'
102
101
  segments:
103
102
  - 0
104
- hash: 3177321081275544915
103
+ hash: 781173456630097566
105
104
  required_rubygems_version: !ruby/object:Gem::Requirement
106
105
  none: false
107
106
  requirements:
data/test/helper.rb DELETED
@@ -1,18 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
- require 'test/unit'
11
- require 'shoulda'
12
-
13
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
- $LOAD_PATH.unshift(File.dirname(__FILE__))
15
- require 'rails-translate-models'
16
-
17
- class Test::Unit::TestCase
18
- end