state_machine_audits 0.1.0
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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README +29 -0
- data/Rakefile +2 -0
- data/lib/state_machine_audits.rb +21 -0
- data/lib/state_machine_audits/state_machine_state_audit.rb +3 -0
- data/lib/state_machine_audits/state_machine_state_audits.rb +3 -0
- data/lib/state_machine_audits/version.rb +3 -0
- data/state_machine_audits.gemspec +25 -0
- metadata +132 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
== StateMachineAudits
|
2
|
+
|
3
|
+
This gem is meant to be used in conjunction with the state_machine gem in a Rails3 project. It will hook into before_save and track any state changes that happen in its own database table.
|
4
|
+
|
5
|
+
To that end, you need a migration that looks something like this:
|
6
|
+
|
7
|
+
class CreateStateMachineStateAudits < ActiveRecord::Migration
|
8
|
+
def self.up
|
9
|
+
create_table :state_machine_state_audits do |t|
|
10
|
+
t.string :state_machine_auditable_type
|
11
|
+
t.integer :state_machine_auditable_id
|
12
|
+
t.string :state_field
|
13
|
+
t.string :state
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.down
|
19
|
+
drop_table :state_machine_state_audits
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
After that, you just include the module in your class that uses state_machine like so:
|
24
|
+
|
25
|
+
class SomeClass < ActiveRecord::Base
|
26
|
+
include StateMachineAudits
|
27
|
+
end
|
28
|
+
|
29
|
+
That's it, you're done. Now it will keep a record of each state transition.
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'state_machine_audits/state_machine_state_audit'
|
2
|
+
|
3
|
+
module StateMachineAudits
|
4
|
+
VERSION = "0.1.0"
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
after_save :store_state_machine_audit
|
9
|
+
has_many :state_machine_state_audits, :as => :state_machine_auditable
|
10
|
+
end
|
11
|
+
|
12
|
+
def store_state_machine_audit
|
13
|
+
self.class.state_machines.keys.each do |_state|
|
14
|
+
if self.changes.include?(_state.to_s)
|
15
|
+
the_new_state = self.changes[_state].last
|
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
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/state_machine_audits/version", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "state_machine_audits"
|
6
|
+
s.version = StateMachineAudits::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ['Josh Adams', 'Nick Fine', 'Adam Dill']
|
9
|
+
s.email = ['josh@isotope11.com']
|
10
|
+
s.homepage = "http://rubygems.org/gems/state_machine_audits"
|
11
|
+
s.summary = "Audits for the state_machine gem"
|
12
|
+
|
13
|
+
s.required_rubygems_version = ">= 1.3.6"
|
14
|
+
s.rubyforge_project = "state_machine_audits"
|
15
|
+
|
16
|
+
s.add_development_dependency "bundler", ">= 1.0.0.rc.6"
|
17
|
+
|
18
|
+
s.add_dependency 'activesupport', '~> 3.0.0'
|
19
|
+
s.add_dependency 'activerecord', '~> 3.0.0'
|
20
|
+
s.add_dependency 'state_machine', '~> 0.9.4'
|
21
|
+
|
22
|
+
s.files = `git ls-files`.split("\n")
|
23
|
+
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
24
|
+
s.require_path = 'lib'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,132 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: state_machine_audits
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Josh Adams
|
13
|
+
- Nick Fine
|
14
|
+
- Adam Dill
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2011-01-14 00:00:00 -06:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: bundler
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 0
|
32
|
+
- 0
|
33
|
+
- rc
|
34
|
+
- 6
|
35
|
+
version: 1.0.0.rc.6
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: activesupport
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
segments:
|
46
|
+
- 3
|
47
|
+
- 0
|
48
|
+
- 0
|
49
|
+
version: 3.0.0
|
50
|
+
type: :runtime
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: activerecord
|
54
|
+
prerelease: false
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ~>
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 3
|
61
|
+
- 0
|
62
|
+
- 0
|
63
|
+
version: 3.0.0
|
64
|
+
type: :runtime
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: state_machine
|
68
|
+
prerelease: false
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
- 9
|
76
|
+
- 4
|
77
|
+
version: 0.9.4
|
78
|
+
type: :runtime
|
79
|
+
version_requirements: *id004
|
80
|
+
description:
|
81
|
+
email:
|
82
|
+
- josh@isotope11.com
|
83
|
+
executables: []
|
84
|
+
|
85
|
+
extensions: []
|
86
|
+
|
87
|
+
extra_rdoc_files: []
|
88
|
+
|
89
|
+
files:
|
90
|
+
- .gitignore
|
91
|
+
- Gemfile
|
92
|
+
- README
|
93
|
+
- Rakefile
|
94
|
+
- lib/state_machine_audits.rb
|
95
|
+
- lib/state_machine_audits/state_machine_state_audit.rb
|
96
|
+
- lib/state_machine_audits/state_machine_state_audits.rb
|
97
|
+
- lib/state_machine_audits/version.rb
|
98
|
+
- state_machine_audits.gemspec
|
99
|
+
has_rdoc: true
|
100
|
+
homepage: http://rubygems.org/gems/state_machine_audits
|
101
|
+
licenses: []
|
102
|
+
|
103
|
+
post_install_message:
|
104
|
+
rdoc_options: []
|
105
|
+
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
segments:
|
113
|
+
- 0
|
114
|
+
version: "0"
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
segments:
|
120
|
+
- 1
|
121
|
+
- 3
|
122
|
+
- 6
|
123
|
+
version: 1.3.6
|
124
|
+
requirements: []
|
125
|
+
|
126
|
+
rubyforge_project: state_machine_audits
|
127
|
+
rubygems_version: 1.3.6
|
128
|
+
signing_key:
|
129
|
+
specification_version: 3
|
130
|
+
summary: Audits for the state_machine gem
|
131
|
+
test_files: []
|
132
|
+
|