state_machine_audits 0.1.0 → 0.1.1
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/state_machine_audits.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'state_machine_audits/state_machine_state_audit'
|
2
2
|
|
3
3
|
module StateMachineAudits
|
4
|
-
VERSION = "0.1.0"
|
5
4
|
extend ActiveSupport::Concern
|
6
5
|
|
7
6
|
included do
|
7
|
+
raise "class must inherit from ActiveRecord::Base" unless self < ActiveRecord::Base
|
8
8
|
after_save :store_state_machine_audit
|
9
9
|
has_many :state_machine_state_audits, :as => :state_machine_auditable
|
10
10
|
end
|
@@ -14,7 +14,6 @@ module StateMachineAudits
|
|
14
14
|
if self.changes.include?(_state.to_s)
|
15
15
|
the_new_state = self.changes[_state].last
|
16
16
|
self.state_machine_state_audits.create(:state => the_new_state, :state_field => _state.to_s)
|
17
|
-
Rails.logger.warn "AUDITING STATE: #{_state} - #{the_new_state}" if Rails.env.development?
|
18
17
|
end
|
19
18
|
end
|
20
19
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require 'active_support'
|
3
|
+
require 'state_machine'
|
4
|
+
require 'state_machine_audits'
|
5
|
+
|
6
|
+
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
7
|
+
|
8
|
+
ActiveRecord::Base.connection.create_table(:state_machine_state_audits) do |t|
|
9
|
+
t.string :state_machine_auditable_type
|
10
|
+
t.integer :state_machine_auditable_id
|
11
|
+
t.string :state_field
|
12
|
+
t.string :state
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
|
16
|
+
ActiveRecord::Base.connection.create_table(:vehicles) do |t|
|
17
|
+
t.string :name
|
18
|
+
t.string :state
|
19
|
+
t.timestamps
|
20
|
+
end
|
21
|
+
|
22
|
+
class Vehicle < ActiveRecord::Base
|
23
|
+
include StateMachineAudits
|
24
|
+
|
25
|
+
state_machine :initial => :parked do
|
26
|
+
event :ignite do
|
27
|
+
transition :parked => :first_gear
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe StateMachineStateAudit do
|
33
|
+
|
34
|
+
let( :vehicle ) { Vehicle.new }
|
35
|
+
|
36
|
+
context 'when a state machine event is called on a model' do
|
37
|
+
it 'should create a new audit record' do
|
38
|
+
lambda { vehicle.ignite }.should change(StateMachineStateAudit, :count).by(1)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should record the state' do
|
42
|
+
vehicle.ignite
|
43
|
+
vehicle.state_machine_state_audits.last.state.should == 'first_gear'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
context 'when the class does not inherit from ActiveRecord::Base' do
|
49
|
+
it 'should raise an error' do
|
50
|
+
lambda do
|
51
|
+
class Truck; include StateMachineAudits; end
|
52
|
+
end.should raise_error "class must inherit from ActiveRecord::Base"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -14,6 +14,8 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.rubyforge_project = "state_machine_audits"
|
15
15
|
|
16
16
|
s.add_development_dependency "bundler", ">= 1.0.0.rc.6"
|
17
|
+
s.add_development_dependency "rspec", "~> 2.4.0"
|
18
|
+
s.add_development_dependency "sqlite3", "~> 1.3.3"
|
17
19
|
|
18
20
|
s.add_dependency 'activesupport', '~> 3.0.0'
|
19
21
|
s.add_dependency 'activerecord', '~> 3.0.0'
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: state_machine_audits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Josh Adams
|
@@ -16,16 +17,18 @@ autorequire:
|
|
16
17
|
bindir: bin
|
17
18
|
cert_chain: []
|
18
19
|
|
19
|
-
date: 2011-01-
|
20
|
+
date: 2011-01-18 00:00:00 -06:00
|
20
21
|
default_executable:
|
21
22
|
dependencies:
|
22
23
|
- !ruby/object:Gem::Dependency
|
23
24
|
name: bundler
|
24
25
|
prerelease: false
|
25
26
|
requirement: &id001 !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
26
28
|
requirements:
|
27
29
|
- - ">="
|
28
30
|
- !ruby/object:Gem::Version
|
31
|
+
hash: 15424057
|
29
32
|
segments:
|
30
33
|
- 1
|
31
34
|
- 0
|
@@ -36,47 +39,85 @@ dependencies:
|
|
36
39
|
type: :development
|
37
40
|
version_requirements: *id001
|
38
41
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
42
|
+
name: rspec
|
40
43
|
prerelease: false
|
41
44
|
requirement: &id002 !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ~>
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
hash: 31
|
50
|
+
segments:
|
51
|
+
- 2
|
52
|
+
- 4
|
53
|
+
- 0
|
54
|
+
version: 2.4.0
|
55
|
+
type: :development
|
56
|
+
version_requirements: *id002
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: sqlite3
|
59
|
+
prerelease: false
|
60
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
hash: 29
|
66
|
+
segments:
|
67
|
+
- 1
|
68
|
+
- 3
|
69
|
+
- 3
|
70
|
+
version: 1.3.3
|
71
|
+
type: :development
|
72
|
+
version_requirements: *id003
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: activesupport
|
75
|
+
prerelease: false
|
76
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
42
78
|
requirements:
|
43
79
|
- - ~>
|
44
80
|
- !ruby/object:Gem::Version
|
81
|
+
hash: 7
|
45
82
|
segments:
|
46
83
|
- 3
|
47
84
|
- 0
|
48
85
|
- 0
|
49
86
|
version: 3.0.0
|
50
87
|
type: :runtime
|
51
|
-
version_requirements: *
|
88
|
+
version_requirements: *id004
|
52
89
|
- !ruby/object:Gem::Dependency
|
53
90
|
name: activerecord
|
54
91
|
prerelease: false
|
55
|
-
requirement: &
|
92
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
56
94
|
requirements:
|
57
95
|
- - ~>
|
58
96
|
- !ruby/object:Gem::Version
|
97
|
+
hash: 7
|
59
98
|
segments:
|
60
99
|
- 3
|
61
100
|
- 0
|
62
101
|
- 0
|
63
102
|
version: 3.0.0
|
64
103
|
type: :runtime
|
65
|
-
version_requirements: *
|
104
|
+
version_requirements: *id005
|
66
105
|
- !ruby/object:Gem::Dependency
|
67
106
|
name: state_machine
|
68
107
|
prerelease: false
|
69
|
-
requirement: &
|
108
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
70
110
|
requirements:
|
71
111
|
- - ~>
|
72
112
|
- !ruby/object:Gem::Version
|
113
|
+
hash: 51
|
73
114
|
segments:
|
74
115
|
- 0
|
75
116
|
- 9
|
76
117
|
- 4
|
77
118
|
version: 0.9.4
|
78
119
|
type: :runtime
|
79
|
-
version_requirements: *
|
120
|
+
version_requirements: *id006
|
80
121
|
description:
|
81
122
|
email:
|
82
123
|
- josh@isotope11.com
|
@@ -93,8 +134,8 @@ files:
|
|
93
134
|
- Rakefile
|
94
135
|
- lib/state_machine_audits.rb
|
95
136
|
- lib/state_machine_audits/state_machine_state_audit.rb
|
96
|
-
- lib/state_machine_audits/state_machine_state_audits.rb
|
97
137
|
- lib/state_machine_audits/version.rb
|
138
|
+
- spec/state_machine_audits_spec.rb
|
98
139
|
- state_machine_audits.gemspec
|
99
140
|
has_rdoc: true
|
100
141
|
homepage: http://rubygems.org/gems/state_machine_audits
|
@@ -106,16 +147,20 @@ rdoc_options: []
|
|
106
147
|
require_paths:
|
107
148
|
- lib
|
108
149
|
required_ruby_version: !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
109
151
|
requirements:
|
110
152
|
- - ">="
|
111
153
|
- !ruby/object:Gem::Version
|
154
|
+
hash: 3
|
112
155
|
segments:
|
113
156
|
- 0
|
114
157
|
version: "0"
|
115
158
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
|
+
none: false
|
116
160
|
requirements:
|
117
161
|
- - ">="
|
118
162
|
- !ruby/object:Gem::Version
|
163
|
+
hash: 23
|
119
164
|
segments:
|
120
165
|
- 1
|
121
166
|
- 3
|
@@ -124,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
169
|
requirements: []
|
125
170
|
|
126
171
|
rubyforge_project: state_machine_audits
|
127
|
-
rubygems_version: 1.
|
172
|
+
rubygems_version: 1.4.1
|
128
173
|
signing_key:
|
129
174
|
specification_version: 3
|
130
175
|
summary: Audits for the state_machine gem
|