armot 0.2.4 → 0.2.5
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/lib/armot/active_record_extensions.rb +25 -20
- data/lib/armot/version.rb +1 -1
- data/test/armot_test.rb +20 -0
- data/test/schema.rb +4 -0
- data/test/test_helper.rb +8 -0
- metadata +14 -14
@@ -4,6 +4,8 @@ module Armot
|
|
4
4
|
def armotize(*attributes)
|
5
5
|
make_it_armot! unless included_modules.include?(InstanceMethods)
|
6
6
|
|
7
|
+
mixin = Module.new
|
8
|
+
|
7
9
|
attributes.each do |attribute|
|
8
10
|
self.instance_eval <<-RUBY
|
9
11
|
def find_by_#{attribute}(value)
|
@@ -38,32 +40,35 @@ module Armot
|
|
38
40
|
end
|
39
41
|
RUBY
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
mixin.module_eval <<-STR
|
44
|
+
def #{attribute}=(value)
|
45
|
+
armot_attributes[I18n.locale]['#{attribute}'] = value
|
46
|
+
I18n.backend.reload!
|
47
|
+
end
|
46
48
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
return if new_record?
|
49
|
+
def #{attribute}
|
50
|
+
return armot_attributes[I18n.locale]['#{attribute}'] if armot_attributes[I18n.locale]['#{attribute}']
|
51
|
+
return if new_record?
|
51
52
|
|
52
|
-
|
53
|
-
|
53
|
+
trans = I18n.t "#{attribute}_\#{id}", :scope => "armot.\#{self.class.to_s.underscore.pluralize}.#{attribute}", :default => Armot.token
|
54
|
+
return trans if trans != Armot.token
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
56
|
+
(I18n.available_locales - [I18n.locale]).each do |lang|
|
57
|
+
trans = I18n.t "#{attribute}_\#{id}", :scope => "armot.\#{self.class.to_s.underscore.pluralize}.#{attribute}", :default => Armot.token, :locale => lang
|
58
|
+
break if trans != Armot.token
|
59
|
+
end
|
59
60
|
|
60
|
-
|
61
|
-
|
61
|
+
trans == Armot.token ? self[:#{attribute}] : trans
|
62
|
+
end
|
62
63
|
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
def #{attribute}_changed?
|
65
|
+
armot_attributes[I18n.locale]['#{attribute}'].present?
|
66
|
+
end
|
67
|
+
STR
|
66
68
|
end
|
69
|
+
|
70
|
+
self.const_set("ArmotInstanceMethods", mixin)
|
71
|
+
include self.const_get("ArmotInstanceMethods") unless self.included_modules.include?("ArmotInstanceMethods")
|
67
72
|
end
|
68
73
|
|
69
74
|
private
|
data/lib/armot/version.rb
CHANGED
data/test/armot_test.rb
CHANGED
@@ -271,4 +271,24 @@ class ArmotTest < ActiveSupport::TestCase
|
|
271
271
|
foo = Post.methods.include?(to_method_name(:find_by_title))
|
272
272
|
assert_equal true, foo
|
273
273
|
end
|
274
|
+
|
275
|
+
test "should be able to use super from an overrided setter" do
|
276
|
+
# Product class has 'name' setter redefined
|
277
|
+
a = Product.create
|
278
|
+
|
279
|
+
I18n.locale = :ca
|
280
|
+
a.name = "Catalan foo"
|
281
|
+
|
282
|
+
I18n.locale = :en
|
283
|
+
a.name = "English foo"
|
284
|
+
a.save!
|
285
|
+
|
286
|
+
a.reload
|
287
|
+
|
288
|
+
I18n.locale = :ca
|
289
|
+
assert_equal "Catalan foo customized", a.name
|
290
|
+
I18n.locale = :en
|
291
|
+
assert_equal "English foo customized", a.name
|
292
|
+
|
293
|
+
end
|
274
294
|
end
|
data/test/schema.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -32,6 +32,14 @@ class Post < ActiveRecord::Base
|
|
32
32
|
validates_presence_of :title
|
33
33
|
end
|
34
34
|
|
35
|
+
class Product < ActiveRecord::Base
|
36
|
+
armotize :name
|
37
|
+
|
38
|
+
def name=(value)
|
39
|
+
super(value + " customized")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
35
43
|
# Puret translation model to test migration process
|
36
44
|
class PostTranslation < ActiveRecord::Base
|
37
45
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: armot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
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: 2011-
|
12
|
+
date: 2011-12-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: i18n-active_record
|
16
|
-
requirement: &
|
16
|
+
requirement: &76322190 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.0.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *76322190
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activerecord
|
27
|
-
requirement: &
|
27
|
+
requirement: &76321840 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.0.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *76321840
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &76321540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 3.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *76321540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &76321310 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *76321310
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sqlite3
|
60
|
-
requirement: &
|
60
|
+
requirement: &76321020 !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: *
|
68
|
+
version_requirements: *76321020
|
69
69
|
description: translation support for your models with an I18n active-record backend
|
70
70
|
email:
|
71
71
|
- roger@itnig.net
|
@@ -103,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
segments:
|
105
105
|
- 0
|
106
|
-
hash: -
|
106
|
+
hash: -304182355
|
107
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
108
|
none: false
|
109
109
|
requirements:
|
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
112
|
version: '0'
|
113
113
|
segments:
|
114
114
|
- 0
|
115
|
-
hash: -
|
115
|
+
hash: -304182355
|
116
116
|
requirements: []
|
117
117
|
rubyforge_project: armot
|
118
118
|
rubygems_version: 1.8.10
|