rails-translate-models 0.0.2 → 0.0.3

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