globalize3 0.2.0.beta4 → 0.2.0.beta6

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
@@ -2,8 +2,3 @@ source :rubygems
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'ruby-debug', :platform => :mri_18
6
- gem 'ruby-debug19', :platform => :mri_19 if RUBY_VERSION < '1.9.3'
7
-
8
- gem 'activerecord', '3.0.10'
9
- gem 'activemodel', '3.0.10'
data/Gemfile.lock CHANGED
@@ -9,114 +9,101 @@ PATH
9
9
  GEM
10
10
  remote: http://rubygems.org/
11
11
  specs:
12
- abstract (1.0.0)
13
- actionmailer (3.0.10)
14
- actionpack (= 3.0.10)
15
- mail (~> 2.2.19)
16
- actionpack (3.0.10)
17
- activemodel (= 3.0.10)
18
- activesupport (= 3.0.10)
19
- builder (~> 2.1.2)
20
- erubis (~> 2.6.6)
21
- i18n (~> 0.5.0)
22
- rack (~> 1.2.1)
23
- rack-mount (~> 0.6.14)
24
- rack-test (~> 0.5.7)
25
- tzinfo (~> 0.3.23)
26
- activemodel (3.0.10)
27
- activesupport (= 3.0.10)
28
- builder (~> 2.1.2)
29
- i18n (~> 0.5.0)
30
- activerecord (3.0.10)
31
- activemodel (= 3.0.10)
32
- activesupport (= 3.0.10)
33
- arel (~> 2.0.10)
34
- tzinfo (~> 0.3.23)
35
- activeresource (3.0.10)
36
- activemodel (= 3.0.10)
37
- activesupport (= 3.0.10)
38
- activesupport (3.0.10)
39
- archive-tar-minitar (0.5.2)
40
- arel (2.0.10)
41
- builder (2.1.2)
42
- columnize (0.3.4)
12
+ actionmailer (3.1.3)
13
+ actionpack (= 3.1.3)
14
+ mail (~> 2.3.0)
15
+ actionpack (3.1.3)
16
+ activemodel (= 3.1.3)
17
+ activesupport (= 3.1.3)
18
+ builder (~> 3.0.0)
19
+ erubis (~> 2.7.0)
20
+ i18n (~> 0.6)
21
+ rack (~> 1.3.5)
22
+ rack-cache (~> 1.1)
23
+ rack-mount (~> 0.8.2)
24
+ rack-test (~> 0.6.1)
25
+ sprockets (~> 2.0.3)
26
+ activemodel (3.1.3)
27
+ activesupport (= 3.1.3)
28
+ builder (~> 3.0.0)
29
+ i18n (~> 0.6)
30
+ activerecord (3.1.3)
31
+ activemodel (= 3.1.3)
32
+ activesupport (= 3.1.3)
33
+ arel (~> 2.2.1)
34
+ tzinfo (~> 0.3.29)
35
+ activeresource (3.1.3)
36
+ activemodel (= 3.1.3)
37
+ activesupport (= 3.1.3)
38
+ activesupport (3.1.3)
39
+ multi_json (~> 1.0)
40
+ arel (2.2.1)
41
+ builder (3.0.0)
43
42
  database_cleaner (0.5.2)
44
- erubis (2.6.6)
45
- abstract (>= 1.0.0)
46
- i18n (0.5.0)
47
- linecache (0.46)
48
- rbx-require-relative (> 0.0.4)
49
- linecache19 (0.5.12)
50
- ruby_core_source (>= 0.1.4)
51
- mail (2.2.19)
52
- activesupport (>= 2.3.6)
43
+ erubis (2.7.0)
44
+ hike (1.2.1)
45
+ i18n (0.6.0)
46
+ json (1.6.4)
47
+ mail (2.3.0)
53
48
  i18n (>= 0.4.0)
54
49
  mime-types (~> 1.16)
55
50
  treetop (~> 1.4.8)
56
51
  metaclass (0.0.1)
57
- mime-types (1.16)
52
+ mime-types (1.17.2)
58
53
  mocha (0.10.0)
59
54
  metaclass (~> 0.0.1)
60
- paper_trail (2.3.2)
55
+ multi_json (1.0.4)
56
+ paper_trail (2.5.0)
61
57
  rails (~> 3)
62
58
  pathname_local (0.0.2)
63
- polyglot (0.3.2)
64
- rack (1.2.3)
65
- rack-mount (0.6.14)
59
+ polyglot (0.3.3)
60
+ rack (1.3.6)
61
+ rack-cache (1.1)
62
+ rack (>= 0.4)
63
+ rack-mount (0.8.3)
66
64
  rack (>= 1.0.0)
67
- rack-test (0.5.7)
65
+ rack-ssl (1.3.2)
66
+ rack
67
+ rack-test (0.6.1)
68
68
  rack (>= 1.0)
69
- rails (3.0.10)
70
- actionmailer (= 3.0.10)
71
- actionpack (= 3.0.10)
72
- activerecord (= 3.0.10)
73
- activeresource (= 3.0.10)
74
- activesupport (= 3.0.10)
69
+ rails (3.1.3)
70
+ actionmailer (= 3.1.3)
71
+ actionpack (= 3.1.3)
72
+ activerecord (= 3.1.3)
73
+ activeresource (= 3.1.3)
74
+ activesupport (= 3.1.3)
75
75
  bundler (~> 1.0)
76
- railties (= 3.0.10)
77
- railties (3.0.10)
78
- actionpack (= 3.0.10)
79
- activesupport (= 3.0.10)
76
+ railties (= 3.1.3)
77
+ railties (3.1.3)
78
+ actionpack (= 3.1.3)
79
+ activesupport (= 3.1.3)
80
+ rack-ssl (~> 1.3.2)
80
81
  rake (>= 0.8.7)
81
82
  rdoc (~> 3.4)
82
- thor (~> 0.14.4)
83
- rake (0.9.2)
84
- rbx-require-relative (0.0.5)
85
- rdoc (3.9.4)
86
- ruby-debug (0.10.4)
87
- columnize (>= 0.1)
88
- ruby-debug-base (~> 0.10.4.0)
89
- ruby-debug-base (0.10.4)
90
- linecache (>= 0.3)
91
- ruby-debug-base19 (0.11.25)
92
- columnize (>= 0.3.1)
93
- linecache19 (>= 0.5.11)
94
- ruby_core_source (>= 0.1.4)
95
- ruby-debug19 (0.11.6)
96
- columnize (>= 0.3.1)
97
- linecache19 (>= 0.5.11)
98
- ruby-debug-base19 (>= 0.11.19)
99
- ruby_core_source (0.1.5)
100
- archive-tar-minitar (>= 0.5.2)
101
- sqlite3 (1.3.4)
83
+ thor (~> 0.14.6)
84
+ rake (0.9.2.2)
85
+ rdoc (3.12)
86
+ json (~> 1.4)
87
+ sprockets (2.0.3)
88
+ hike (~> 1.2)
89
+ rack (~> 1.0)
90
+ tilt (~> 1.1, != 1.3.0)
91
+ sqlite3 (1.3.5)
102
92
  test_declarative (0.0.5)
103
93
  thor (0.14.6)
94
+ tilt (1.3.3)
104
95
  treetop (1.4.10)
105
96
  polyglot
106
97
  polyglot (>= 0.3.1)
107
- tzinfo (0.3.29)
98
+ tzinfo (0.3.31)
108
99
 
109
100
  PLATFORMS
110
101
  ruby
111
102
 
112
103
  DEPENDENCIES
113
- activemodel (= 3.0.10)
114
- activerecord (= 3.0.10)
115
104
  database_cleaner (= 0.5.2)
116
105
  globalize3!
117
106
  mocha
118
107
  pathname_local
119
- ruby-debug
120
- ruby-debug19
121
108
  sqlite3
122
109
  test_declarative
@@ -11,16 +11,29 @@ module Globalize
11
11
  super.merge(translated_attributes)
12
12
  end
13
13
 
14
- def attributes=(attributes, *args)
15
- with_given_locale(attributes) { super }
16
- end
17
-
18
- def update_attributes!(attributes, *args)
19
- with_given_locale(attributes) { super }
20
- end
21
-
22
- def update_attributes(attributes, *args)
23
- with_given_locale(attributes) { super }
14
+ def self.included(base)
15
+ # Maintain Rails 3.0.x compatibility while adding Rails 3.1.x compatibility
16
+ if base.method_defined?(:assign_attributes)
17
+ base.class_eval %{
18
+ def assign_attributes(attributes, options = {})
19
+ with_given_locale(attributes) { super }
20
+ end
21
+ }
22
+ else
23
+ base.class_eval %{
24
+ def attributes=(attributes, *args)
25
+ with_given_locale(attributes) { super }
26
+ end
27
+
28
+ def update_attributes!(attributes, *args)
29
+ with_given_locale(attributes) { super }
30
+ end
31
+
32
+ def update_attributes(attributes, *args)
33
+ with_given_locale(attributes) { super }
34
+ end
35
+ }
36
+ end
24
37
  end
25
38
 
26
39
  def write_attribute(name, value, options = {})
@@ -115,9 +128,9 @@ module Globalize
115
128
  def translation_for(locale)
116
129
  @translation_caches ||= {}
117
130
  unless @translation_caches[locale]
118
- # Enumberable#detect is better since we have the translations collection (already) loaded
119
- # using either Model.includes(:translations) or Model.with_translations
131
+ # Fetch translations from database as those in the translation collection may be incomplete
120
132
  _translation = translations.detect{|t| t.locale.to_s == locale.to_s}
133
+ _translation ||= translations.with_locale(locale).first
121
134
  _translation ||= translations.build(:locale => locale)
122
135
  @translation_caches[locale] = _translation
123
136
  end
@@ -30,9 +30,16 @@ module Globalize
30
30
 
31
31
  create_translation_table
32
32
  move_data_to_translation_table if options[:migrate_data]
33
+ remove_source_columns if options[:remove_source_columns]
33
34
  create_translations_index
34
35
  end
35
36
 
37
+ def remove_source_columns
38
+ translated_attribute_names.each do |attribute|
39
+ connection.remove_column(table_name, attribute)
40
+ end
41
+ end
42
+
36
43
  def drop_translation_table!(options = {})
37
44
  move_data_to_model_table if options[:migrate_data]
38
45
  drop_translations_index
@@ -60,6 +67,11 @@ module Globalize
60
67
  "#{table_name.sub(/^#{table_name_prefix}/, "").singularize}_id",
61
68
  :name => translation_index_name
62
69
  )
70
+ # index for select('DISTINCT locale') call in translation.rb
71
+ connection.add_index(
72
+ translations_table_name,
73
+ :locale
74
+ )
63
75
  end
64
76
 
65
77
  def drop_translation_table
@@ -71,6 +83,16 @@ module Globalize
71
83
  end
72
84
 
73
85
  def move_data_to_translation_table
86
+ # this refactored version might be a good idea,
87
+ # but only if made into a code that doesn't break tests
88
+ # model.find_each do |record|
89
+ # translation = record.translations.build(:locale => I18n.default_locale)
90
+ # translated_attribute_names.each do |attribute|
91
+ # translation[attribute] = record[attribute]
92
+ # end
93
+ # translation.save!
94
+ # end
95
+
74
96
  # Find all of the existing untranslated attributes for this model.
75
97
  all_model_fields = @model.all
76
98
  model_attributes = all_model_fields.collect {|m| m.untranslated_attributes}
@@ -82,6 +104,8 @@ module Globalize
82
104
  end
83
105
 
84
106
  def move_data_to_model_table
107
+ add_missing_columns
108
+
85
109
  # Find all of the translated attributes for all records in the model.
86
110
  all_translated_attributes = @model.all.collect{|m| m.attributes}
87
111
  all_translated_attributes.each do |translated_record|
@@ -119,6 +143,18 @@ module Globalize
119
143
  index_name = "index_#{translations_table_name}_on_#{table_name.singularize}_id"
120
144
  index_name.size < 50 ? index_name : "index_#{Digest::SHA1.hexdigest(index_name)}"
121
145
  end
146
+
147
+
148
+ private
149
+
150
+ def add_missing_columns
151
+ translated_attribute_names.map(&:to_s).each do |attribute|
152
+ unless model.column_names.include?(attribute)
153
+ connection.add_column(table_name, attribute, model::Translation.columns_hash[attribute].type)
154
+ end
155
+ end
156
+ end
157
+
122
158
  end
123
159
  end
124
160
  end
@@ -1,3 +1,3 @@
1
1
  module Globalize3
2
- VERSION = '0.2.0.beta4'
2
+ VERSION = '0.2.0.beta6'
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: globalize3
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196363
4
+ hash: -2195621950
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
9
  - 0
10
10
  - beta
11
- - 4
12
- version: 0.2.0.beta4
11
+ - 6
12
+ version: 0.2.0.beta6
13
13
  platform: ruby
14
14
  authors:
15
15
  - Sven Fuchs
@@ -22,7 +22,7 @@ autorequire:
22
22
  bindir: bin
23
23
  cert_chain: []
24
24
 
25
- date: 2011-09-13 00:00:00 Z
25
+ date: 2012-01-11 00:00:00 Z
26
26
  dependencies:
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord