armot 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- # attribute setter
42
- define_method "#{attribute}=" do |value|
43
- armot_attributes[I18n.locale][attribute] = value
44
- I18n.backend.reload!
45
- end
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
- # attribute getter
48
- define_method attribute do
49
- return armot_attributes[I18n.locale][attribute] if armot_attributes[I18n.locale][attribute]
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
- trans = I18n.t "#{attribute}_#{id}", :scope => "armot.#{self.class.to_s.underscore.pluralize}.#{attribute}", :default => Armot.token
53
- return trans if trans != Armot.token
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
- (I18n.available_locales - [I18n.locale]).each do |lang|
56
- trans = I18n.t "#{attribute}_#{id}", :scope => "armot.#{self.class.to_s.underscore.pluralize}.#{attribute}", :default => Armot.token, :locale => lang
57
- break if trans != Armot.token
58
- end
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
- trans == Armot.token ? self[attribute] : trans
61
- end
61
+ trans == Armot.token ? self[:#{attribute}] : trans
62
+ end
62
63
 
63
- define_method "#{attribute}_changed?" do
64
- armot_attributes[I18n.locale][attribute].present?
65
- end
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
@@ -1,3 +1,3 @@
1
1
  module Armot
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -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
@@ -5,6 +5,10 @@ ActiveRecord::Schema.define(:version => 1) do
5
5
  t.string :header
6
6
  end
7
7
 
8
+ create_table :products do |t|
9
+ t.string :name
10
+ end
11
+
8
12
  create_table :comments do |t|
9
13
  t.string :msg
10
14
  t.string :title
@@ -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
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-11-17 00:00:00.000000000 Z
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: &82864110 !ruby/object:Gem::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: *82864110
24
+ version_requirements: *76322190
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
27
- requirement: &82863590 !ruby/object:Gem::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: *82863590
35
+ version_requirements: *76321840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &82863200 !ruby/object:Gem::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: *82863200
46
+ version_requirements: *76321540
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &82862930 !ruby/object:Gem::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: *82862930
57
+ version_requirements: *76321310
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sqlite3
60
- requirement: &82862580 !ruby/object:Gem::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: *82862580
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: -195419853
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: -195419853
115
+ hash: -304182355
116
116
  requirements: []
117
117
  rubyforge_project: armot
118
118
  rubygems_version: 1.8.10