simple_localizer 0.0.5 → 0.0.6

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -24,28 +24,31 @@ module SimpleLocalizer
24
24
 
25
25
  module ClassMethods
26
26
  def translates *columns
27
- underscore_name = name.underscore.gsub("/", "_").to_sym
28
- foreign_key = "#{underscore_name}_id".to_sym
29
-
30
- translation_class = const_set(:Translation, Class.new(ActiveRecord::Base))
31
27
  translated_attribute_names = columns.map &:to_s
32
28
 
33
- translation_class.table_name = "#{underscore_name}_translations"
34
- translation_class.belongs_to(underscore_name, # WORKAROUND Rails prefers association name to be symbol
35
- :class_name => self.name,
36
- :foreign_key => foreign_key
37
- )
38
- translation_class.validates :locale, :presence => true
39
- translation_class.validates underscore_name, :presence => true
40
- translation_class.validates :locale, :uniqueness => { :scope => foreign_key }
41
-
42
- has_many(:translations,
43
- :dependent => :destroy,
44
- :autosave => true,
45
- :class_name => translation_class.name,
46
- :inverse_of => underscore_name,
47
- :foreign_key => foreign_key
48
- )
29
+ unless const_defined? :Translation
30
+ underscore_name = name.underscore.gsub("/", "_").to_sym
31
+ foreign_key = "#{underscore_name}_id".to_sym
32
+
33
+ translation_class = const_set(:Translation, Class.new(ActiveRecord::Base))
34
+
35
+ translation_class.table_name = "#{underscore_name}_translations"
36
+ translation_class.belongs_to(underscore_name, # WORKAROUND Rails prefers association name to be symbol
37
+ :class_name => self.name,
38
+ :foreign_key => foreign_key
39
+ )
40
+ translation_class.validates :locale, :presence => true
41
+ translation_class.validates underscore_name, :presence => true
42
+ translation_class.validates :locale, :uniqueness => { :scope => foreign_key }
43
+
44
+ has_many(:translations,
45
+ :dependent => :destroy,
46
+ :autosave => true,
47
+ :class_name => translation_class.name,
48
+ :inverse_of => underscore_name,
49
+ :foreign_key => foreign_key
50
+ )
51
+ end
49
52
 
50
53
  translated_attribute_names.each do |attr|
51
54
  define_method attr do
@@ -68,9 +71,9 @@ module SimpleLocalizer
68
71
  }
69
72
 
70
73
  if I18n.respond_to?(:fallbacks) && translation.try(attr).nil?
71
- fallbacks_locales = I18n.fallbacks[locale.to_sym]
74
+ fallbacks_locales = I18n.fallbacks.fetch(locale.to_sym, locale).map(&:to_s)
72
75
  translation = translations.detect { |translation|
73
- fallbacks_locales.include?(translation.locale.to_sym) && translation.send(attr).present?
76
+ fallbacks_locales.include?(translation.locale) && translation.send(attr).present?
74
77
  }
75
78
  end
76
79
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "simple_localizer"
8
- s.version = "0.0.5"
8
+ s.version = "0.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["vad4msiu"]
12
- s.date = "2013-01-23"
12
+ s.date = "2013-01-24"
13
13
  s.description = "Simple localization your ActiveRecord fields without magic"
14
14
  s.email = "vad4msiu@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/vad4msiu/projects/github/simple_localizer
3
3
  specs:
4
- simple_localizer (0.0.4)
4
+ simple_localizer (0.0.5)
5
5
  activerecord
6
6
 
7
7
  GEM
@@ -2,8 +2,9 @@ class CreateProductTranslations < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :product_translations do |t|
4
4
  t.string :locale, :null => false
5
- t.integer :product_id
6
- t.string :name
5
+ t.integer :product_id
6
+ t.string :name
7
+ t.string :description
7
8
 
8
9
  t.timestamps
9
10
  end
@@ -55,11 +55,12 @@ ActiveRecord::Schema.define(:version => 20130123200543) do
55
55
  add_index "legacy_service_translations", ["locale"], :name => "index_legacy_service_translations_on_locale"
56
56
 
57
57
  create_table "product_translations", :force => true do |t|
58
- t.string "locale", :null => false
58
+ t.string "locale", :null => false
59
59
  t.integer "product_id"
60
60
  t.string "name"
61
- t.datetime "created_at", :null => false
62
- t.datetime "updated_at", :null => false
61
+ t.string "description"
62
+ t.datetime "created_at", :null => false
63
+ t.datetime "updated_at", :null => false
63
64
  end
64
65
 
65
66
  add_index "product_translations", ["locale", "product_id"], :name => "index_product_translations_on_locale_and_product_id", :unique => true
@@ -121,8 +121,25 @@ end
121
121
  describe Product do
122
122
  let(:product) { Product.create! :name_ru => 'asd' }
123
123
 
124
- describe "после обвноления" do
124
+ it "должен поддерживать повтороный вызов translates" do
125
+ expect {
126
+ product.update_attributes(
127
+ :name_ru => 'qwe',
128
+ :description_ru => 'asd'
129
+ )
130
+ }.to raise_error
125
131
 
132
+ Product.translates :description
133
+
134
+ expect {
135
+ product.update_attributes(
136
+ :name_ru => 'qwe',
137
+ :description_ru => 'asd'
138
+ )
139
+ }.to_not raise_error
140
+ end
141
+
142
+ describe "после обвноления" do
126
143
  it "должен обновлять перевод" do
127
144
  product.update_attributes :name_ru => 'qwe'
128
145
  product.translations.where(:locale => 'ru').first.name.should == 'qwe'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_localizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-23 00:00:00.000000000 Z
12
+ date: 2013-01-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &70257384619060 !ruby/object:Gem::Requirement
16
+ requirement: &70339903079500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70257384619060
24
+ version_requirements: *70339903079500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70257384631020 !ruby/object:Gem::Requirement
27
+ requirement: &70339903089440 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.8.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70257384631020
35
+ version_requirements: *70339903089440
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &70257384628940 !ruby/object:Gem::Requirement
38
+ requirement: &70339903087320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70257384628940
46
+ version_requirements: *70339903087320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &70257384626000 !ruby/object:Gem::Requirement
49
+ requirement: &70339903084420 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70257384626000
57
+ version_requirements: *70339903084420
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: database_cleaner
60
- requirement: &70257384624000 !ruby/object:Gem::Requirement
60
+ requirement: &70339903082420 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70257384624000
68
+ version_requirements: *70339903082420
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
- requirement: &70257384638660 !ruby/object:Gem::Requirement
71
+ requirement: &70339903097020 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70257384638660
79
+ version_requirements: *70339903097020
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rails
82
- requirement: &70257384637400 !ruby/object:Gem::Requirement
82
+ requirement: &70339903095720 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - =
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 3.2.10
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70257384637400
90
+ version_requirements: *70339903095720
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rack
93
- requirement: &70257384634960 !ruby/object:Gem::Requirement
93
+ requirement: &70339903093360 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - =
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: 1.4.1
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70257384634960
101
+ version_requirements: *70339903093360
102
102
  description: Simple localization your ActiveRecord fields without magic
103
103
  email: vad4msiu@gmail.com
104
104
  executables: []
@@ -206,7 +206,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
206
206
  version: '0'
207
207
  segments:
208
208
  - 0
209
- hash: 434225171533963133
209
+ hash: -4422529473626842115
210
210
  required_rubygems_version: !ruby/object:Gem::Requirement
211
211
  none: false
212
212
  requirements: