memento 0.3.4 → 0.3.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/CHANGES.md ADDED
@@ -0,0 +1,9 @@
1
+ ### dev
2
+
3
+ [full changelog](http://github.com/yolk/valvat/compare/v0.3.5...master)
4
+
5
+ ### 0.3.5 / 2012-02-06
6
+
7
+ [full changelog](http://github.com/yolk/valvat/compare/v0.3.4...v0.3.5)
8
+
9
+ * Compatiblity with Rails 3.2
@@ -1,3 +1,5 @@
1
+ require 'active_support/core_ext/class/attribute'
2
+
1
3
  module Memento::Action
2
4
  class Base
3
5
  def initialize(state)
@@ -5,6 +7,8 @@ module Memento::Action
5
7
  end
6
8
 
7
9
  attr_reader :state
10
+ class_attribute :action_types, :instance_reader => false, :instance_writer => false
11
+ self.action_types = []
8
12
 
9
13
  def record
10
14
  @state.record
@@ -19,12 +23,7 @@ module Memento::Action
19
23
  end
20
24
 
21
25
  def self.inherited(child)
22
- action_type = child.name.demodulize.underscore
23
- write_inheritable_attribute(:action_types, action_types << action_type)
24
- end
25
-
26
- def self.action_types
27
- read_inheritable_attribute(:action_types) || []
26
+ self.action_types << child.name.demodulize.underscore
28
27
  end
29
28
 
30
29
  private
@@ -1,9 +1,13 @@
1
+ require 'active_support/core_ext/class/attribute'
2
+
1
3
  module Memento::ActiveRecordMethods
2
4
 
3
5
  IGNORE_ATTRIBUTES = [:updated_at, :created_at]
4
6
 
5
7
  def self.included(base)
6
- base.send :extend, ClassMethods
8
+ base.class_attribute(:memento_options_store, :instance_reader => false, :instance_writer => false)
9
+ base.memento_options_store = {}
10
+ base.extend ClassMethods
7
11
  end
8
12
 
9
13
  module ClassMethods
@@ -33,13 +37,13 @@ module Memento::ActiveRecordMethods
33
37
  end
34
38
 
35
39
  def memento_options
36
- read_inheritable_attribute(:memento_options) || write_inheritable_attribute(:memento_options,{})
40
+ self.memento_options_store ||= {}
37
41
  end
38
42
 
39
43
  def memento_options=(options)
40
44
  options.symbolize_keys!
41
45
  options[:ignore] = [options[:ignore]].flatten.map(&:to_sym) if options[:ignore]
42
- write_inheritable_attribute(:memento_options, memento_options.merge(options))
46
+ self.memento_options_store = memento_options_store.merge(options)
43
47
  end
44
48
  end
45
49
 
@@ -1,3 +1,3 @@
1
1
  class Memento
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.5"
3
3
  end
data/lib/memento.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'active_record'
2
- require 'active_support/core_ext/class/inheritable_attributes'
3
2
 
4
3
  class Memento
5
4
  include Singleton
@@ -35,6 +35,10 @@ describe Memento::ActiveRecordMethods do
35
35
  }
36
36
  end
37
37
 
38
+ it "should set memento_options" do
39
+ Project.memento_options.should eql({:ignore=>[:ignore_this]})
40
+ end
41
+
38
42
  it "should define changes_for_memento and ignore attributes given by options" do
39
43
  project = Project.create!(:name => "Project X")
40
44
  project.name = "A Project"
metadata CHANGED
@@ -5,9 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 4
9
- segments_generated: true
10
- version: 0.3.4
8
+ - 5
9
+ version: 0.3.5
11
10
  platform: ruby
12
11
  authors:
13
12
  - Yolk Sebastian Munz & Julia Soergel GbR
@@ -15,11 +14,12 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-11-10 00:00:00 +01:00
17
+ date: 2012-02-06 00:00:00 +01:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: activerecord
22
+ prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
@@ -28,13 +28,12 @@ dependencies:
28
28
  segments:
29
29
  - 3
30
30
  - 0
31
- segments_generated: true
32
31
  version: "3.0"
33
32
  type: :runtime
34
- prerelease: false
35
33
  version_requirements: *id001
36
34
  - !ruby/object:Gem::Dependency
37
35
  name: actionpack
36
+ prerelease: false
38
37
  requirement: &id002 !ruby/object:Gem::Requirement
39
38
  none: false
40
39
  requirements:
@@ -43,13 +42,12 @@ dependencies:
43
42
  segments:
44
43
  - 3
45
44
  - 0
46
- segments_generated: true
47
45
  version: "3.0"
48
46
  type: :runtime
49
- prerelease: false
50
47
  version_requirements: *id002
51
48
  - !ruby/object:Gem::Dependency
52
49
  name: rspec
50
+ prerelease: false
53
51
  requirement: &id003 !ruby/object:Gem::Requirement
54
52
  none: false
55
53
  requirements:
@@ -59,13 +57,12 @@ dependencies:
59
57
  - 2
60
58
  - 4
61
59
  - 0
62
- segments_generated: true
63
60
  version: 2.4.0
64
61
  type: :development
65
- prerelease: false
66
62
  version_requirements: *id003
67
63
  - !ruby/object:Gem::Dependency
68
64
  name: sqlite3
65
+ prerelease: false
69
66
  requirement: &id004 !ruby/object:Gem::Requirement
70
67
  none: false
71
68
  requirements:
@@ -75,10 +72,8 @@ dependencies:
75
72
  - 1
76
73
  - 3
77
74
  - 3
78
- segments_generated: true
79
75
  version: 1.3.3
80
76
  type: :development
81
- prerelease: false
82
77
  version_requirements: *id004
83
78
  description: Undo for Rails/ActiveRecord - covers destroy, update and create
84
79
  email: sebastian@yo.lk
@@ -90,6 +85,7 @@ extra_rdoc_files: []
90
85
 
91
86
  files:
92
87
  - .gitignore
88
+ - CHANGES.md
93
89
  - Gemfile
94
90
  - LICENSE
95
91
  - README.rdoc
@@ -134,20 +130,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
130
  requirements:
135
131
  - - ">="
136
132
  - !ruby/object:Gem::Version
137
- hash: -4150374159441153301
138
133
  segments:
139
134
  - 0
140
- segments_generated: true
141
135
  version: "0"
142
136
  required_rubygems_version: !ruby/object:Gem::Requirement
143
137
  none: false
144
138
  requirements:
145
139
  - - ">="
146
140
  - !ruby/object:Gem::Version
147
- hash: -4150374159441153301
148
141
  segments:
149
142
  - 0
150
- segments_generated: true
151
143
  version: "0"
152
144
  requirements: []
153
145