globalize3 0.1.0.beta → 0.1.0.beta2
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.lock +25 -23
- data/README.textile +1 -1
- data/lib/globalize/active_record/act_macro.rb +7 -4
- data/lib/globalize/active_record/adapter.rb +50 -60
- data/lib/globalize/active_record/attributes.rb +2 -1
- data/lib/globalize/active_record/class_methods.rb +63 -27
- data/lib/globalize/active_record/instance_methods.rb +41 -14
- data/lib/globalize/active_record/translation.rb +4 -1
- data/lib/globalize.rb +14 -8
- data/lib/globalize3/version.rb +1 -1
- metadata +4 -48
data/Gemfile.lock
CHANGED
@@ -1,55 +1,57 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
globalize3 (0.0.
|
4
|
+
globalize3 (0.1.0.beta2)
|
5
5
|
activemodel (>= 3.0.0)
|
6
6
|
activerecord (>= 3.0.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
|
-
activemodel (3.0.
|
12
|
-
activesupport (= 3.0.
|
11
|
+
activemodel (3.0.7)
|
12
|
+
activesupport (= 3.0.7)
|
13
13
|
builder (~> 2.1.2)
|
14
|
-
i18n (~> 0.
|
15
|
-
activerecord (3.0.
|
16
|
-
activemodel (= 3.0.
|
17
|
-
activesupport (= 3.0.
|
14
|
+
i18n (~> 0.5.0)
|
15
|
+
activerecord (3.0.7)
|
16
|
+
activemodel (= 3.0.7)
|
17
|
+
activesupport (= 3.0.7)
|
18
18
|
arel (~> 2.0.2)
|
19
19
|
tzinfo (~> 0.3.23)
|
20
|
-
activesupport (3.0.
|
21
|
-
|
20
|
+
activesupport (3.0.7)
|
21
|
+
archive-tar-minitar (0.5.2)
|
22
|
+
arel (2.0.10)
|
22
23
|
builder (2.1.2)
|
23
24
|
columnize (0.3.2)
|
24
25
|
database_cleaner (0.5.2)
|
25
26
|
i18n (0.5.0)
|
26
|
-
|
27
|
+
linecache19 (0.5.11)
|
28
|
+
ruby_core_source (>= 0.1.4)
|
27
29
|
mocha (0.9.10)
|
28
30
|
rake
|
29
31
|
pathname_local (0.0.2)
|
30
32
|
rake (0.8.7)
|
31
|
-
ruby-debug (0.
|
32
|
-
columnize (>= 0.1)
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
ruby-debug-base19 (0.11.24)
|
34
|
+
columnize (>= 0.3.1)
|
35
|
+
linecache19 (>= 0.5.11)
|
36
|
+
ruby_core_source (>= 0.1.4)
|
37
|
+
ruby-debug19 (0.11.6)
|
38
|
+
columnize (>= 0.3.1)
|
39
|
+
linecache19 (>= 0.5.11)
|
40
|
+
ruby-debug-base19 (>= 0.11.19)
|
41
|
+
ruby_core_source (0.1.4)
|
42
|
+
archive-tar-minitar (>= 0.5.2)
|
36
43
|
sqlite3-ruby (1.3.2)
|
37
|
-
test_declarative (0.0.
|
38
|
-
tzinfo (0.3.
|
44
|
+
test_declarative (0.0.5)
|
45
|
+
tzinfo (0.3.27)
|
39
46
|
|
40
47
|
PLATFORMS
|
41
48
|
ruby
|
42
49
|
|
43
50
|
DEPENDENCIES
|
44
|
-
activemodel (>= 3.0.0)
|
45
|
-
activerecord (>= 3.0.0)
|
46
51
|
database_cleaner (= 0.5.2)
|
47
52
|
globalize3!
|
48
53
|
mocha
|
49
54
|
pathname_local
|
50
|
-
ruby-
|
55
|
+
ruby-debug19
|
51
56
|
sqlite3-ruby
|
52
57
|
test_declarative
|
53
|
-
|
54
|
-
METADATA
|
55
|
-
version: 1.0.6
|
data/README.textile
CHANGED
@@ -62,7 +62,7 @@ As well as creating a translation table, you can also use @create_translation_ta
|
|
62
62
|
existing data to the default locale. This can also operate in reverse to restore any translations from the default locale
|
63
63
|
back to the model when you don't want to use a translation table anymore using @drop_translation_table!@
|
64
64
|
|
65
|
-
This feature makes use of @
|
65
|
+
This feature makes use of @untranslated_attributes@ which allows access to the model's attributes as they were before
|
66
66
|
the translation was applied. Here's an example (which assumes you already have a model called @Post@ and its table exists):
|
67
67
|
|
68
68
|
<pre><code>
|
@@ -7,7 +7,7 @@ module Globalize
|
|
7
7
|
options = attr_names.extract_options!
|
8
8
|
options[:table_name] ||= "#{table_name.singularize}_translations"
|
9
9
|
|
10
|
-
|
10
|
+
class_attribute :translated_attribute_names, :translation_options
|
11
11
|
self.translated_attribute_names = attr_names.map(&:to_sym)
|
12
12
|
self.translation_options = options
|
13
13
|
|
@@ -19,14 +19,17 @@ module Globalize
|
|
19
19
|
:dependent => :delete_all,
|
20
20
|
:extend => HasManyExtensions
|
21
21
|
|
22
|
-
|
22
|
+
after_create :save_translations!
|
23
|
+
after_update :save_translations!
|
23
24
|
|
24
25
|
attr_names.each { |attr_name| translated_attr_accessor(attr_name) }
|
25
26
|
end
|
26
27
|
|
27
28
|
def class_name
|
28
|
-
class_name
|
29
|
-
|
29
|
+
@class_name ||= begin
|
30
|
+
class_name = table_name[table_name_prefix.length..-(table_name_suffix.length + 1)].downcase.camelize
|
31
|
+
pluralize_table_names ? class_name.singularize : class_name
|
32
|
+
end
|
30
33
|
end
|
31
34
|
|
32
35
|
def translates?
|
@@ -3,25 +3,36 @@ module Globalize
|
|
3
3
|
class Adapter
|
4
4
|
# The cache caches attributes that already were looked up for read access.
|
5
5
|
# The stash keeps track of new or changed values that need to be saved.
|
6
|
-
|
6
|
+
attr_accessor :record, :stash, :translations
|
7
|
+
private :record=, :stash=
|
7
8
|
|
8
9
|
delegate :translation_class, :to => :'record.class'
|
9
10
|
|
10
11
|
def initialize(record)
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
self.record = record
|
13
|
+
self.stash = Attributes.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def fetch_stash(locale, name)
|
17
|
+
value = stash.read(locale, name)
|
18
|
+
return value if value
|
19
|
+
return nil
|
14
20
|
end
|
15
21
|
|
16
22
|
def fetch(locale, name)
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
Globalize.fallbacks(locale).each do |fallback|
|
24
|
+
value = fetch_stash(fallback, name) || fetch_attribute(fallback, name)
|
25
|
+
|
26
|
+
if value
|
27
|
+
set_metadata(value, :locale => fallback, :requested_locale => locale)
|
28
|
+
return value
|
29
|
+
end
|
30
|
+
end
|
31
|
+
return nil
|
20
32
|
end
|
21
33
|
|
22
34
|
def write(locale, name, value)
|
23
35
|
stash.write(locale, name, value)
|
24
|
-
cache.write(locale, name, value)
|
25
36
|
end
|
26
37
|
|
27
38
|
def save_translations!
|
@@ -30,71 +41,50 @@ module Globalize
|
|
30
41
|
attrs.each { |name, value| translation[name] = value }
|
31
42
|
translation.save!
|
32
43
|
end
|
44
|
+
record.translations.reset
|
33
45
|
stash.clear
|
34
46
|
end
|
35
47
|
|
36
48
|
def reset
|
37
|
-
|
49
|
+
stash.clear
|
38
50
|
end
|
39
51
|
|
40
|
-
|
41
|
-
|
42
|
-
def type_cast(name, value)
|
43
|
-
if value.nil?
|
44
|
-
nil
|
45
|
-
elsif column = column_for_attribute(name)
|
46
|
-
column.type_cast(value)
|
47
|
-
else
|
48
|
-
value
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def column_for_attribute(name)
|
53
|
-
translation_class.columns_hash[name.to_s]
|
54
|
-
end
|
55
|
-
|
56
|
-
def unserializable_attribute?(name, column)
|
57
|
-
column.text? && translation_class.serialized_attributes[name.to_s]
|
58
|
-
end
|
59
|
-
|
60
|
-
def fetch_translation(locale)
|
61
|
-
locale = locale.to_sym
|
62
|
-
record.translations.loaded? ? record.translations.detect { |t| t.locale == locale } :
|
63
|
-
record.translations.with_locales(locale)
|
64
|
-
end
|
52
|
+
protected
|
65
53
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
54
|
+
def type_cast(name, value)
|
55
|
+
if value.nil?
|
56
|
+
nil
|
57
|
+
elsif column = column_for_attribute(name)
|
58
|
+
column.type_cast(value)
|
59
|
+
else
|
60
|
+
value
|
70
61
|
end
|
62
|
+
end
|
71
63
|
|
72
|
-
|
73
|
-
|
74
|
-
|
64
|
+
def column_for_attribute(name)
|
65
|
+
translation_class.columns_hash[name.to_s]
|
66
|
+
end
|
75
67
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
locale = fallback && break if value
|
80
|
-
end
|
68
|
+
def unserializable_attribute?(name, column)
|
69
|
+
column.text? && translation_class.serialized_attributes[name.to_s]
|
70
|
+
end
|
81
71
|
|
82
|
-
|
83
|
-
|
84
|
-
|
72
|
+
def fetch_attribute(locale, name)
|
73
|
+
translations ||= record.translations
|
74
|
+
translation = translations.detect{|t| t.locale == locale}
|
75
|
+
return translation && translation.send(name)
|
76
|
+
end
|
85
77
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
78
|
+
def set_metadata(object, metadata)
|
79
|
+
object.translation_metadata.merge!(meta_data) if object.respond_to?(:translation_metadata)
|
80
|
+
object
|
81
|
+
end
|
91
82
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
83
|
+
def translation_metadata_accessor(object)
|
84
|
+
return if obj.respond_to?(:translation_metadata)
|
85
|
+
class << object; attr_accessor :translation_metadata end
|
86
|
+
object.translation_metadata ||= {}
|
87
|
+
end
|
97
88
|
end
|
98
89
|
end
|
99
90
|
end
|
100
|
-
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
module Globalize
|
5
5
|
module ActiveRecord
|
6
|
-
class Attributes < Hash
|
6
|
+
class Attributes < Hash # TODO: Think about using HashWithIndifferentAccess ?
|
7
7
|
def [](locale)
|
8
8
|
locale = locale.to_sym
|
9
9
|
self[locale] = {} unless has_key?(locale)
|
@@ -19,6 +19,7 @@ module Globalize
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def write(locale, name, value)
|
22
|
+
#raise 'z' if value.nil? # TODO
|
22
23
|
self[locale][name.to_s] = value
|
23
24
|
end
|
24
25
|
end
|
@@ -4,7 +4,7 @@ module Globalize
|
|
4
4
|
delegate :translated_locales, :set_translations_table_name, :to => :translation_class
|
5
5
|
|
6
6
|
def with_locales(*locales)
|
7
|
-
scoped
|
7
|
+
scoped.merge(translation_class.with_locales(*locales))
|
8
8
|
end
|
9
9
|
|
10
10
|
def with_translations(*locales)
|
@@ -39,16 +39,18 @@ module Globalize
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def translation_class
|
42
|
-
|
43
|
-
|
44
|
-
klass
|
45
|
-
|
42
|
+
@translation_class ||= begin
|
43
|
+
klass = self.const_get(:Translation) rescue nil
|
44
|
+
if klass.nil? || klass.class_name != (self.class_name + "Translation")
|
45
|
+
klass = self.const_set(:Translation, Class.new(Globalize::ActiveRecord::Translation))
|
46
|
+
end
|
46
47
|
|
47
|
-
|
48
|
-
|
49
|
-
|
48
|
+
if klass.table_name == 'translations'
|
49
|
+
klass.set_table_name(translation_options[:table_name])
|
50
|
+
klass.belongs_to name.underscore.gsub('/', '_')
|
51
|
+
end
|
52
|
+
klass
|
50
53
|
end
|
51
|
-
klass
|
52
54
|
end
|
53
55
|
|
54
56
|
def translations_table_name
|
@@ -59,30 +61,64 @@ module Globalize
|
|
59
61
|
"#{translation_class.table_name}.#{name}"
|
60
62
|
end
|
61
63
|
|
62
|
-
|
63
|
-
|
64
|
+
if RUBY_VERSION < '1.9'
|
65
|
+
def respond_to?(method_id, *args, &block)
|
66
|
+
supported_on_missing?(method_id) || super
|
67
|
+
end
|
68
|
+
else
|
69
|
+
def respond_to_missing?(method_id, include_private = false)
|
70
|
+
supported_on_missing?(method_id) || super
|
71
|
+
end
|
64
72
|
end
|
65
73
|
|
66
|
-
def
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
74
|
+
def supported_on_missing?(method_id)
|
75
|
+
return super unless RUBY_VERSION < '1.9' || respond_to?(:translated_attribute_names)
|
76
|
+
match = ::ActiveRecord::DynamicFinderMatch.match(method_id) || ::ActiveRecord::DynamicScopeMatch.match(method_id)
|
77
|
+
return false if match.nil?
|
78
|
+
|
79
|
+
attribute_names = match.attribute_names.map(&:to_sym)
|
80
|
+
translated_attributes = attribute_names & translated_attribute_names
|
81
|
+
return false if translated_attributes.empty?
|
82
|
+
|
83
|
+
untranslated_attributes = attribute_names - translated_attributes
|
84
|
+
return false if untranslated_attributes.any?{|unt| ! respond_to?(:"scoped_by_#{unt}")}
|
85
|
+
return [match, attribute_names, translated_attributes, untranslated_attributes]
|
86
|
+
end
|
87
|
+
|
88
|
+
def method_missing(method_id, *arguments, &block)
|
89
|
+
match, attribute_names, translated_attributes, untranslated_attributes = supported_on_missing?(method_id)
|
90
|
+
return super unless match
|
91
|
+
|
92
|
+
scope = scoped
|
93
|
+
|
94
|
+
translated_attributes.each do |attr|
|
95
|
+
scope = scope.with_translated_attribute(attr, arguments[attribute_names.index(attr)])
|
72
96
|
end
|
97
|
+
|
98
|
+
untranslated_attributes.each do |unt|
|
99
|
+
index = attribute_names.index(unt)
|
100
|
+
raise StandarError unless index
|
101
|
+
scope = scope.send(:"scoped_by_#{unt}", arguments[index])
|
102
|
+
end
|
103
|
+
|
104
|
+
return scope.send(match.finder) if match.is_a?(::ActiveRecord::DynamicFinderMatch)
|
105
|
+
return scope
|
73
106
|
end
|
74
107
|
|
75
|
-
|
108
|
+
protected
|
76
109
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|
81
|
-
define_method(name) do |*args|
|
82
|
-
read_attribute(name, {:locale => args.first})
|
83
|
-
end
|
84
|
-
alias_method :"#{name}_before_type_cast", name
|
110
|
+
def translated_attr_accessor(name)
|
111
|
+
define_method(:"#{name}=") do |value|
|
112
|
+
write_attribute(name, value)
|
85
113
|
end
|
114
|
+
define_method(name) do |*args|
|
115
|
+
read_attribute(name, {:locale => args.first})
|
116
|
+
end
|
117
|
+
alias_method :"#{name}_before_type_cast", name
|
118
|
+
end
|
119
|
+
|
86
120
|
end
|
121
|
+
|
87
122
|
end
|
88
|
-
|
123
|
+
|
124
|
+
end
|
@@ -24,9 +24,7 @@ module Globalize
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def write_attribute(name, value, options = {})
|
27
|
-
#
|
28
|
-
# rely on the data
|
29
|
-
return_value = super(name, value)
|
27
|
+
# raise 'y' if value.nil? # TODO.
|
30
28
|
|
31
29
|
if translated?(name)
|
32
30
|
# Deprecate old use of locale
|
@@ -35,9 +33,11 @@ module Globalize
|
|
35
33
|
options = {:locale => options}
|
36
34
|
end
|
37
35
|
options = {:locale => nil}.merge(options)
|
38
|
-
|
36
|
+
attribute_will_change! name.to_s
|
37
|
+
globalize.write(options[:locale] || Globalize.locale, name, value)
|
38
|
+
else
|
39
|
+
super(name, value)
|
39
40
|
end
|
40
|
-
return_value
|
41
41
|
end
|
42
42
|
|
43
43
|
def read_attribute(name, options = {})
|
@@ -93,20 +93,47 @@ module Globalize
|
|
93
93
|
super(options)
|
94
94
|
end
|
95
95
|
|
96
|
-
|
96
|
+
def clone
|
97
|
+
obj = super
|
98
|
+
return obj unless respond_to?(:translated_attribute_names)
|
97
99
|
|
98
|
-
|
99
|
-
|
100
|
+
obj.instance_variable_set(:@translations, nil) if new_record? # Reset the collection because of rails bug: http://pastie.org/1521874
|
101
|
+
obj.instance_variable_set(:@globalize, nil )
|
102
|
+
each_locale_and_translated_attribute do |locale, name|
|
103
|
+
obj.globalize.write(locale, name, globalize.fetch(locale, name) )
|
100
104
|
end
|
101
105
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
106
|
+
return obj
|
107
|
+
end
|
108
|
+
|
109
|
+
protected
|
110
|
+
|
111
|
+
def each_locale_and_translated_attribute
|
112
|
+
used_locales.each do |locale|
|
113
|
+
translated_attribute_names.each do |name|
|
114
|
+
yield locale, name
|
108
115
|
end
|
109
116
|
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def used_locales
|
120
|
+
locales = globalize.stash.keys.concat(globalize.stash.keys).concat(translations.translated_locales)
|
121
|
+
locales.uniq!
|
122
|
+
locales
|
123
|
+
end
|
124
|
+
|
125
|
+
def save_translations!
|
126
|
+
globalize.save_translations!
|
127
|
+
end
|
128
|
+
|
129
|
+
def with_given_locale(attributes, &block)
|
130
|
+
attributes.symbolize_keys! if attributes.respond_to?(:symbolize_keys!)
|
131
|
+
if locale = attributes.try(:delete, :locale)
|
132
|
+
Globalize.with_locale(locale, &block)
|
133
|
+
else
|
134
|
+
yield
|
135
|
+
end
|
136
|
+
end
|
110
137
|
end
|
111
138
|
end
|
112
139
|
end
|
@@ -3,7 +3,10 @@ module Globalize
|
|
3
3
|
class Translation < ::ActiveRecord::Base
|
4
4
|
class << self
|
5
5
|
def with_locales(*locales)
|
6
|
-
|
6
|
+
# Avoid using "IN" with SQL queries when only using one locale.
|
7
|
+
locales = locales.flatten.map(&:to_s)
|
8
|
+
locales = locales.first if locales.one?
|
9
|
+
where(:locale => locales)
|
7
10
|
end
|
8
11
|
alias with_locale with_locales
|
9
12
|
|
data/lib/globalize.rb
CHANGED
@@ -18,11 +18,17 @@ module Globalize
|
|
18
18
|
def with_locale(locale, &block)
|
19
19
|
previous_locale = read_locale
|
20
20
|
set_locale(locale)
|
21
|
-
result = yield
|
21
|
+
result = yield(locale)
|
22
22
|
set_locale(previous_locale)
|
23
23
|
result
|
24
24
|
end
|
25
25
|
|
26
|
+
def with_locales(*locales, &block)
|
27
|
+
locales.flatten.map do |locale|
|
28
|
+
with_locale(locale, &block)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
26
32
|
def fallbacks?
|
27
33
|
I18n.respond_to?(:fallbacks)
|
28
34
|
end
|
@@ -31,15 +37,15 @@ module Globalize
|
|
31
37
|
fallbacks? ? I18n.fallbacks[locale] : [locale.to_sym]
|
32
38
|
end
|
33
39
|
|
34
|
-
|
40
|
+
protected
|
35
41
|
|
36
|
-
|
37
|
-
|
38
|
-
|
42
|
+
def read_locale
|
43
|
+
Thread.current[:globalize_locale]
|
44
|
+
end
|
39
45
|
|
40
|
-
|
41
|
-
|
42
|
-
|
46
|
+
def set_locale(locale)
|
47
|
+
Thread.current[:globalize_locale] = locale.to_sym rescue nil
|
48
|
+
end
|
43
49
|
end
|
44
50
|
end
|
45
51
|
|
data/lib/globalize3/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: globalize3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 31098185
|
5
4
|
prerelease: 6
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
- beta
|
11
|
-
version: 0.1.0.beta
|
5
|
+
version: 0.1.0.beta2
|
12
6
|
platform: ruby
|
13
7
|
authors:
|
14
8
|
- Sven Fuchs
|
@@ -19,7 +13,7 @@ autorequire:
|
|
19
13
|
bindir: bin
|
20
14
|
cert_chain: []
|
21
15
|
|
22
|
-
date: 2011-
|
16
|
+
date: 2011-05-20 00:00:00 +12:00
|
23
17
|
default_executable:
|
24
18
|
dependencies:
|
25
19
|
- !ruby/object:Gem::Dependency
|
@@ -30,11 +24,6 @@ dependencies:
|
|
30
24
|
requirements:
|
31
25
|
- - ">="
|
32
26
|
- !ruby/object:Gem::Version
|
33
|
-
hash: 7
|
34
|
-
segments:
|
35
|
-
- 3
|
36
|
-
- 0
|
37
|
-
- 0
|
38
27
|
version: 3.0.0
|
39
28
|
type: :runtime
|
40
29
|
version_requirements: *id001
|
@@ -46,11 +35,6 @@ dependencies:
|
|
46
35
|
requirements:
|
47
36
|
- - ">="
|
48
37
|
- !ruby/object:Gem::Version
|
49
|
-
hash: 7
|
50
|
-
segments:
|
51
|
-
- 3
|
52
|
-
- 0
|
53
|
-
- 0
|
54
38
|
version: 3.0.0
|
55
39
|
type: :runtime
|
56
40
|
version_requirements: *id002
|
@@ -62,11 +46,6 @@ dependencies:
|
|
62
46
|
requirements:
|
63
47
|
- - "="
|
64
48
|
- !ruby/object:Gem::Version
|
65
|
-
hash: 15
|
66
|
-
segments:
|
67
|
-
- 0
|
68
|
-
- 5
|
69
|
-
- 2
|
70
49
|
version: 0.5.2
|
71
50
|
type: :development
|
72
51
|
version_requirements: *id003
|
@@ -78,9 +57,6 @@ dependencies:
|
|
78
57
|
requirements:
|
79
58
|
- - ">="
|
80
59
|
- !ruby/object:Gem::Version
|
81
|
-
hash: 3
|
82
|
-
segments:
|
83
|
-
- 0
|
84
60
|
version: "0"
|
85
61
|
type: :development
|
86
62
|
version_requirements: *id004
|
@@ -92,9 +68,6 @@ dependencies:
|
|
92
68
|
requirements:
|
93
69
|
- - ">="
|
94
70
|
- !ruby/object:Gem::Version
|
95
|
-
hash: 3
|
96
|
-
segments:
|
97
|
-
- 0
|
98
71
|
version: "0"
|
99
72
|
type: :development
|
100
73
|
version_requirements: *id005
|
@@ -106,23 +79,17 @@ dependencies:
|
|
106
79
|
requirements:
|
107
80
|
- - ">="
|
108
81
|
- !ruby/object:Gem::Version
|
109
|
-
hash: 3
|
110
|
-
segments:
|
111
|
-
- 0
|
112
82
|
version: "0"
|
113
83
|
type: :development
|
114
84
|
version_requirements: *id006
|
115
85
|
- !ruby/object:Gem::Dependency
|
116
|
-
name: ruby-
|
86
|
+
name: ruby-debug19
|
117
87
|
prerelease: false
|
118
88
|
requirement: &id007 !ruby/object:Gem::Requirement
|
119
89
|
none: false
|
120
90
|
requirements:
|
121
91
|
- - ">="
|
122
92
|
- !ruby/object:Gem::Version
|
123
|
-
hash: 3
|
124
|
-
segments:
|
125
|
-
- 0
|
126
93
|
version: "0"
|
127
94
|
type: :development
|
128
95
|
version_requirements: *id007
|
@@ -134,9 +101,6 @@ dependencies:
|
|
134
101
|
requirements:
|
135
102
|
- - ">="
|
136
103
|
- !ruby/object:Gem::Version
|
137
|
-
hash: 3
|
138
|
-
segments:
|
139
|
-
- 0
|
140
104
|
version: "0"
|
141
105
|
type: :development
|
142
106
|
version_requirements: *id008
|
@@ -186,25 +150,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
186
150
|
requirements:
|
187
151
|
- - ">="
|
188
152
|
- !ruby/object:Gem::Version
|
189
|
-
hash: 3
|
190
|
-
segments:
|
191
|
-
- 0
|
192
153
|
version: "0"
|
193
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
155
|
none: false
|
195
156
|
requirements:
|
196
157
|
- - ">"
|
197
158
|
- !ruby/object:Gem::Version
|
198
|
-
hash: 25
|
199
|
-
segments:
|
200
|
-
- 1
|
201
|
-
- 3
|
202
|
-
- 1
|
203
159
|
version: 1.3.1
|
204
160
|
requirements: []
|
205
161
|
|
206
162
|
rubyforge_project: "[none]"
|
207
|
-
rubygems_version: 1.
|
163
|
+
rubygems_version: 1.6.2
|
208
164
|
signing_key:
|
209
165
|
specification_version: 3
|
210
166
|
summary: "Rails I18n: de-facto standard library for ActiveRecord 3 model/data translation"
|