stonepath 0.0.5 → 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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.1.0
@@ -55,8 +55,10 @@ module StonePath
55
55
  # a workitem for the specific kind of task, everything just works.
56
56
  belongs_to :workitem, :polymorphic => true
57
57
 
58
- def audits_transitions
58
+ def logs_transitions
59
59
  puts "#{self.class} audits transitions"
60
+ # see notes in work_item's version of this method. This ideally should be an includable
61
+ # module
60
62
  end
61
63
 
62
64
  include AASM
@@ -8,6 +8,20 @@ module StonePath
8
8
  base.instance_eval do
9
9
  include AASM
10
10
 
11
+ #this method needs to be a mixin so we can share it with tasks...
12
+ def log_events
13
+ has_many :logged_events, :as => :auditable, :class_name => "EventRecord"
14
+
15
+ define_method :aasm_event_fired do |event_name, old_state_name, new_state_name|
16
+
17
+ current_user_id = current_user && current_user.id
18
+ self.logged_events.create(:event_name => event_name.to_s,
19
+ :old_state_name => old_state_name.to_s,
20
+ :new_state_name => new_state_name.to_s,
21
+ :user_id => current_user_id)
22
+ end
23
+ end
24
+
11
25
  def owned_by(owner, options={})
12
26
  options.merge!(:class_name => owner.to_s.classify)
13
27
  belongs_to :owner, options
@@ -0,0 +1,9 @@
1
+ class StonepathEventLogGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ task_name = args[0]
5
+ m.template('event_record.rb', "app/models/event_record.rb")
6
+ m.migration_template("create_event_records.rb", "db/migrate", :migration_file_name => "create_event_records")
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,9 @@
1
1
  class StonepathTaskGenerator < Rails::Generator::Base
2
-
2
+ def manifest
3
+ record do |m|
4
+ task_name = args[0]
5
+ m.template('generic_task.rb', "app/models/#{task_name}.rb")
6
+ m.migration_template("generic_task_migration.rb", "db/migrate", :migration_file_name => "create_#{task_name.tableize}")
7
+ end
8
+ end
3
9
  end
@@ -0,0 +1,17 @@
1
+ class CreateEventRecords < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :event_records do |t|
4
+
5
+ t.references :auditable, :polymorphic => true
6
+ t.string :event_name
7
+ t.string :old_state_name
8
+ t.string :new_state_name
9
+ t.integer :user_id #This will rely on the acl controller hack
10
+ t.timestamps
11
+ end
12
+ end
13
+
14
+ def self.down
15
+ drop_table :event_records
16
+ end
17
+ end
@@ -0,0 +1,6 @@
1
+ class EventRecord < ActiveRecord::Base
2
+ belongs_to :auditable, :polymorphic => true
3
+
4
+ # the user_id field will point to the id of the current_user set by the controller
5
+ # hack. feel free to add our own finder here using that.
6
+ end
@@ -0,0 +1,8 @@
1
+ class <%= args[0].classify %> < ActiveRecord::Base
2
+ include StonePath
3
+
4
+ stonepath_task
5
+
6
+ #logs_transitions
7
+
8
+ end
@@ -0,0 +1,20 @@
1
+ class Create<%= args[0].tableize.classify %> < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :<%= args[0].tableize %> do |t|
4
+
5
+ t.string :aasm_state
6
+ t.references :workitem, :polymorphic => true
7
+ t.references :workbench, :polymorphic => true
8
+
9
+ t.datetime :due_at
10
+ t.datetime :completed_at
11
+ t.timestamps
12
+
13
+ # customize your task here
14
+ end
15
+ end
16
+
17
+ def self.down
18
+ drop_table :<%= args[0].tableize %>
19
+ end
20
+ end
data/stonepath.pdf CHANGED
Binary file
@@ -3,8 +3,4 @@ class Assignment < ActiveRecord::Base
3
3
 
4
4
  stonepath_task
5
5
 
6
- #task_for :case
7
-
8
- audits_transitions
9
-
10
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stonepath
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Bock
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-21 00:00:00 -05:00
12
+ date: 2009-12-29 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -51,12 +51,15 @@ files:
51
51
  - lib/stonepath/work_bench.rb
52
52
  - lib/stonepath/work_item.rb
53
53
  - lib/stonepath/work_owner.rb
54
- - rails_generators/stonepath/stonepath_audit_table_generator.rb
54
+ - rails_generators/stonepath/stonepath_event_log_generator.rb
55
55
  - rails_generators/stonepath/stonepath_task_generator.rb
56
+ - rails_generators/stonepath/templates/create_event_records.rb
57
+ - rails_generators/stonepath/templates/event_record.rb
58
+ - rails_generators/stonepath/templates/generic_task.rb
59
+ - rails_generators/stonepath/templates/generic_task_migration.rb
56
60
  - script/console
57
61
  - script/destroy
58
62
  - script/generate
59
- - stonepath.gemspec
60
63
  - stonepath.pdf
61
64
  - test/acl_test.rb
62
65
  - test/app_root/app/controllers/application_controller.rb
@@ -1,3 +0,0 @@
1
- class StonepathAuditTableGenerator < Rails::Generator::Base
2
-
3
- end
data/stonepath.gemspec DELETED
@@ -1,124 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{stonepath}
8
- s.version = "0.0.5"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["David Bock"]
12
- s.date = %q{2009-12-21}
13
- s.description = %q{Stateful workflow modeling for Rails}
14
- s.email = %q{dbock@codesherpas.com}
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- "History.txt",
20
- "Manifest.txt",
21
- "PostInstall.txt",
22
- "README.rdoc",
23
- "Rakefile",
24
- "VERSION",
25
- "lib/stonepath.rb",
26
- "lib/stonepath/acl.rb",
27
- "lib/stonepath/acl/controller.rb",
28
- "lib/stonepath/acl/role.rb",
29
- "lib/stonepath/acl/state.rb",
30
- "lib/stonepath/config.rb",
31
- "lib/stonepath/controller_hooks.rb",
32
- "lib/stonepath/extensions/activerecordbase.rb",
33
- "lib/stonepath/group.rb",
34
- "lib/stonepath/role.rb",
35
- "lib/stonepath/task.rb",
36
- "lib/stonepath/work_bench.rb",
37
- "lib/stonepath/work_item.rb",
38
- "lib/stonepath/work_owner.rb",
39
- "rails_generators/stonepath/stonepath_audit_table_generator.rb",
40
- "rails_generators/stonepath/stonepath_task_generator.rb",
41
- "script/console",
42
- "script/destroy",
43
- "script/generate",
44
- "stonepath.gemspec",
45
- "stonepath.pdf",
46
- "test/acl_test.rb",
47
- "test/app_root/app/controllers/application_controller.rb",
48
- "test/app_root/app/models/assignment.rb",
49
- "test/app_root/app/models/case.rb",
50
- "test/app_root/app/models/custom_assignment.rb",
51
- "test/app_root/app/models/user.rb",
52
- "test/app_root/config/boot.rb",
53
- "test/app_root/config/database.yml",
54
- "test/app_root/config/environment.rb",
55
- "test/app_root/config/environments/in_memory.rb",
56
- "test/app_root/config/environments/mysql.rb",
57
- "test/app_root/config/environments/postgresql.rb",
58
- "test/app_root/config/environments/sqlite.rb",
59
- "test/app_root/config/environments/sqlite3.rb",
60
- "test/app_root/config/routes.rb",
61
- "test/app_root/db/migrate/01_create_users.rb",
62
- "test/app_root/db/migrate/02_create_assignments.rb",
63
- "test/app_root/db/migrate/03_create_cases.rb",
64
- "test/app_root/lib/console_with_fixtures.rb",
65
- "test/app_root/log/.gitignore",
66
- "test/app_root/script/console",
67
- "test/custom_task_test.rb",
68
- "test/fixtures/users.yml",
69
- "test/group_test.rb",
70
- "test/role_test.rb",
71
- "test/stonepath_test.rb",
72
- "test/task_test.rb",
73
- "test/test_helper.rb",
74
- "test/workitem_test.rb",
75
- "test/workowner_test.rb"
76
- ]
77
- s.homepage = %q{http://github.com/bokmann/stonepath}
78
- s.rdoc_options = ["--charset=UTF-8"]
79
- s.require_paths = ["lib"]
80
- s.rubygems_version = %q{1.3.5}
81
- s.summary = %q{Stonepath: stateful workflow modeling for rails}
82
- s.test_files = [
83
- "test/acl_test.rb",
84
- "test/app_root/app/controllers/application_controller.rb",
85
- "test/app_root/app/models/assignment.rb",
86
- "test/app_root/app/models/case.rb",
87
- "test/app_root/app/models/custom_assignment.rb",
88
- "test/app_root/app/models/user.rb",
89
- "test/app_root/config/boot.rb",
90
- "test/app_root/config/environment.rb",
91
- "test/app_root/config/environments/in_memory.rb",
92
- "test/app_root/config/environments/mysql.rb",
93
- "test/app_root/config/environments/postgresql.rb",
94
- "test/app_root/config/environments/sqlite.rb",
95
- "test/app_root/config/environments/sqlite3.rb",
96
- "test/app_root/config/routes.rb",
97
- "test/app_root/db/migrate/01_create_users.rb",
98
- "test/app_root/db/migrate/02_create_assignments.rb",
99
- "test/app_root/db/migrate/03_create_cases.rb",
100
- "test/app_root/lib/console_with_fixtures.rb",
101
- "test/custom_task_test.rb",
102
- "test/group_test.rb",
103
- "test/role_test.rb",
104
- "test/stonepath_test.rb",
105
- "test/task_test.rb",
106
- "test/test_helper.rb",
107
- "test/workitem_test.rb",
108
- "test/workowner_test.rb"
109
- ]
110
-
111
- if s.respond_to? :specification_version then
112
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
113
- s.specification_version = 3
114
-
115
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
116
- s.add_runtime_dependency(%q<activerecord>, [">= 2.0.0"])
117
- else
118
- s.add_dependency(%q<activerecord>, [">= 2.0.0"])
119
- end
120
- else
121
- s.add_dependency(%q<activerecord>, [">= 2.0.0"])
122
- end
123
- end
124
-