state_machine-audit_trail 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/README.rdoc +23 -0
- data/lib/state_machine/audit_trail/transition_auditing.rb +10 -4
- data/lib/state_machine/audit_trail/version.rb +1 -1
- data/spec/helpers/active_record.rb +4 -7
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YTFiYmZjMjY3YjhhNjJhYzNlMjhlZmQyYWVjZGY0YjZjMGExOTgyZg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1d5ee2c13387ab1270a616717c204ceddd3e0cff
|
4
|
+
data.tar.gz: 1134c034ff9a27b4f2954cfd27ec5950fc364c7f
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MjQ1YWRhYmViYzk2NzZiNTRkZTQxNzNlNmZiOGI4M2NhMWFjMGFmMmQ2NzRm
|
11
|
-
NTQyMGVjZTBmNDI2MmNhYjhhYTFjMTVmY2UxZjhjZmI3NTNkMDg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MzY2NzM5M2I4ZjBiNTA4NzE5YmFlYWE1MTliOTUyMjc0NTBhNjM4MmI2NDJj
|
14
|
-
YjljN2NhYmEzZjA2NDgzM2NmNWE0MzNiMzgwNjVmMmE2NjJhMDkzNGJhMDcw
|
15
|
-
Y2IxOWJiOTFhMWE2NzFhNWE0MGY4MDU1OTM2Mzg3OTcyMDZkNTI=
|
6
|
+
metadata.gz: 220617450fd6439a7decddafc0dffc4ca2a1fd3ef0a1cb10d1d60400e710bc318c2153e64cd06049b5e38e39ebbfc5955507c61ce96bfb75875e17025b43bd74
|
7
|
+
data.tar.gz: 2e8c5702276277406e7031be5df9e538fd502fec261dd7941ff10145cfdf2179ccb04756a55c645043a27c541ad7e5b11f8f5a2a9dccd962830759b9f42a6cae
|
data/README.rdoc
CHANGED
@@ -46,6 +46,29 @@ If you would like to store additional messages in the audit trail, you can do so
|
|
46
46
|
or
|
47
47
|
store_audit_trail :context_to_log => [:field1, :field2] # Will grab the results of the field1 and field2 methods on the model and store them in fields called field1 and field2 on the audit trail model
|
48
48
|
|
49
|
+
=== Store virtual attributes
|
50
|
+
|
51
|
+
Sometimes it can be useful to store dynamically computed information.
|
52
|
+
|
53
|
+
In these situations it's just a matter of defining a new column on table <tt>DeploymentStateTransitions</tt> and configure <tt>context_to_log</tt>.
|
54
|
+
|
55
|
+
i.e.
|
56
|
+
|
57
|
+
class Model < ActiveRecord::Base
|
58
|
+
state_machine :state, :initial => :start do
|
59
|
+
store_audit_trail :context_to_log => :version
|
60
|
+
...
|
61
|
+
|
62
|
+
def version
|
63
|
+
# Dynamically computed field e.g., based on other models
|
64
|
+
...
|
65
|
+
|
66
|
+
class AddVersionToDeploymentStateTransitions < ActiveRecord::Migration
|
67
|
+
def change
|
68
|
+
add_column :deployment_state_transitions, :version, :string
|
69
|
+
...
|
70
|
+
|
71
|
+
|
49
72
|
== About
|
50
73
|
|
51
74
|
This plugin is written by Jesse Storimer and Willem van Bergen for Shopify. Mongoid support was contributed by Siddharth (https://github.com/svs). It is released under the MIT license (see LICENSE).
|
@@ -12,22 +12,28 @@ module StateMachine::AuditTrail::TransitionAuditing
|
|
12
12
|
def store_audit_trail(options = {})
|
13
13
|
state_machine = self
|
14
14
|
state_machine.transition_class_name = (options[:to] || default_transition_class_name).to_s
|
15
|
+
state_machine.setup_backend(options[:context_to_log])
|
16
|
+
|
15
17
|
state_machine.after_transition do |object, transition|
|
16
|
-
state_machine.
|
18
|
+
state_machine.backend.log(object, transition.event, transition.from, transition.to)
|
17
19
|
end
|
18
20
|
|
19
21
|
unless state_machine.action == nil
|
20
22
|
state_machine.owner_class.after_create do |object|
|
21
23
|
if !object.send(state_machine.attribute).nil?
|
22
|
-
state_machine.
|
24
|
+
state_machine.backend.log(object, nil, nil, object.send(state_machine.attribute))
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
30
|
+
def setup_backend(context_to_log = nil)
|
31
|
+
@backend = StateMachine::AuditTrail::Backend.create_for_transition_class(transition_class, self.owner_class, context_to_log)
|
32
|
+
end
|
33
|
+
|
28
34
|
# Public returns an instance of the class which does the actual audit trail logging
|
29
|
-
def
|
30
|
-
@
|
35
|
+
def backend
|
36
|
+
@backend
|
31
37
|
end
|
32
38
|
|
33
39
|
private
|
@@ -153,6 +153,10 @@ class ActiveRecordTestModelWithMultipleStateMachines < ActiveRecord::Base
|
|
153
153
|
end
|
154
154
|
|
155
155
|
module SomeNamespace
|
156
|
+
class ActiveRecordTestModelStateTransition < ActiveRecord::Base
|
157
|
+
belongs_to :test_model
|
158
|
+
end
|
159
|
+
|
156
160
|
class ActiveRecordTestModel < ActiveRecord::Base
|
157
161
|
|
158
162
|
state_machine :state, :initial => :waiting do # log initial state?
|
@@ -169,13 +173,6 @@ module SomeNamespace
|
|
169
173
|
end
|
170
174
|
end
|
171
175
|
|
172
|
-
module SomeNamespace
|
173
|
-
class ActiveRecordTestModelStateTransition < ActiveRecord::Base
|
174
|
-
belongs_to :test_model
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
|
179
176
|
def create_transition_table(owner_class, state, add_context = false)
|
180
177
|
class_name = "#{owner_class.name}#{state.to_s.camelize}Transition"
|
181
178
|
ActiveRecord::Base.connection.create_table(class_name.tableize) do |t|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: state_machine-audit_trail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Willem van Bergen
|
@@ -9,34 +9,34 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-03-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: state_machine
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - '>='
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - '>='
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - '>='
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
@@ -71,14 +71,14 @@ dependencies:
|
|
71
71
|
name: sqlite3
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - '>='
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - '>='
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
@@ -99,14 +99,14 @@ dependencies:
|
|
99
99
|
name: bson_ext
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- -
|
102
|
+
- - '>='
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- -
|
109
|
+
- - '>='
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
description: Log transitions on a state machine to support auditing and business process
|
@@ -151,17 +151,17 @@ require_paths:
|
|
151
151
|
- lib
|
152
152
|
required_ruby_version: !ruby/object:Gem::Requirement
|
153
153
|
requirements:
|
154
|
-
- -
|
154
|
+
- - '>='
|
155
155
|
- !ruby/object:Gem::Version
|
156
156
|
version: '0'
|
157
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
|
-
- -
|
159
|
+
- - '>='
|
160
160
|
- !ruby/object:Gem::Version
|
161
161
|
version: '0'
|
162
162
|
requirements: []
|
163
163
|
rubyforge_project: state_machine
|
164
|
-
rubygems_version: 2.
|
164
|
+
rubygems_version: 2.0.3
|
165
165
|
signing_key:
|
166
166
|
specification_version: 4
|
167
167
|
summary: Log transitions on a state machine to support auditing and business process
|