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.
@@ -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