stonepath 0.1.1 → 0.1.2
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 +1 -1
- data/lib/stonepath.rb +9 -1
- data/lib/stonepath/extensions/action_controller.rb +50 -0
- data/lib/stonepath/extensions/action_view.rb +17 -0
- data/lib/stonepath/extensions/kernel.rb +5 -0
- data/rails/init.rb +0 -0
- data/rails_generators/stonepath/stonepath_workitem_generator.rb +8 -0
- data/rails_generators/stonepath/templates/workitem_readme.txt +14 -0
- metadata +8 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/lib/stonepath.rb
CHANGED
@@ -45,8 +45,16 @@ end
|
|
45
45
|
|
46
46
|
require 'rubygems'
|
47
47
|
require 'active_record'
|
48
|
+
require "stonepath/config"
|
48
49
|
|
50
|
+
# I want to move these into init.rb, but for some reason, the way rails processes the
|
51
|
+
# init.rb chokes on load. I suspect this is an artificial issue because of the way the
|
52
|
+
# embedded test app works.
|
49
53
|
load File.expand_path( File.dirname(__FILE__)) + "/stonepath/extensions/activerecordbase.rb"
|
50
|
-
|
54
|
+
load File.expand_path( File.dirname(__FILE__)) + "/stonepath/extensions/action_controller.rb"
|
55
|
+
load File.expand_path( File.dirname(__FILE__)) + "/stonepath/extensions/kernel.rb"
|
56
|
+
load File.expand_path( File.dirname(__FILE__)) + '/stonepath/extensions/action_view.rb'
|
57
|
+
|
58
|
+
|
51
59
|
|
52
60
|
|
@@ -0,0 +1,50 @@
|
|
1
|
+
if Object.const_defined?(:ActionController)
|
2
|
+
|
3
|
+
module ActionController
|
4
|
+
module Resources
|
5
|
+
|
6
|
+
def define_events_controller(object_sym)
|
7
|
+
class_name = object_sym.to_s.classify
|
8
|
+
controller_name = class_name + "EventsController"
|
9
|
+
|
10
|
+
# This is some amazing bit of meta that will probably go away when we have
|
11
|
+
# a work_item generator. In short, at runtime, this defines the controller
|
12
|
+
# that handles events for something declared in the routes file as a
|
13
|
+
# stonepath_workitem
|
14
|
+
Object.const_set(controller_name, ApplicationController.clone).class_eval do
|
15
|
+
id_name = (class_name.downcase + "_id").to_sym
|
16
|
+
#still need generic http error handling
|
17
|
+
define_method("create") do
|
18
|
+
if request.post?
|
19
|
+
@object = get_class(class_name).find(params[id_name])
|
20
|
+
event = params[:id]
|
21
|
+
if get_class(class_name).aasm_events.keys.include?(event.to_sym)
|
22
|
+
respond_to do |format|
|
23
|
+
if @object.send(event + "!")
|
24
|
+
flash[:notice] = "Event '#{event}' was successfully performed."
|
25
|
+
format.html { redirect_to(@object) }
|
26
|
+
format.xml { render :xml => @object }
|
27
|
+
else
|
28
|
+
flash[:notice] = "Event '#{event}' was NOT successfully performed."
|
29
|
+
format.html { redirect_to(@object) }
|
30
|
+
format.xml { render :xml => @object.errors, :status => :unprocessable_entity }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def stonepath_workitems(resources_symbol, params={})
|
41
|
+
singular_resource_name = resources_symbol.to_s.singularize
|
42
|
+
self.resources resources_symbol, params do |o|
|
43
|
+
o.resource :event, {:only => "create", :controller => "#{singular_resource_name}_events"}
|
44
|
+
end
|
45
|
+
define_events_controller(resources_symbol)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# this 'if' test is necessary because the test app we are using doesn't load ActionView.
|
2
|
+
# of course, the correct way to fix it is to fix the test app and write some tests!
|
3
|
+
if Object.const_defined?(:ActionView)
|
4
|
+
module ActionView
|
5
|
+
module Helpers
|
6
|
+
module UrlHelper
|
7
|
+
|
8
|
+
def link_to_stonepath_event(object, event)
|
9
|
+
path_method = object.class.to_s.downcase + "_event_path"
|
10
|
+
path = self.send(path_method, object, :id => event.to_s)
|
11
|
+
link_to(event.to_s.humanize, path, :method => :post)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/rails/init.rb
ADDED
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
We will eventually have a real generator here that will even include some default config for AASM settings, restful routes for the workflow actions, etc. Until then, it would be best to start a workitem by:
|
2
|
+
|
3
|
+
1) Using scaffold generator
|
4
|
+
2) adding aasm_state:string and owner_id:integer to the migration.
|
5
|
+
3) adding:
|
6
|
+
|
7
|
+
require 'aasm'
|
8
|
+
require 'stonepath'
|
9
|
+
|
10
|
+
stonepath_workitem
|
11
|
+
|
12
|
+
to the model
|
13
|
+
|
14
|
+
4) defining a state machine.
|
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.1.
|
4
|
+
version: 0.1.2
|
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: 2010-01-
|
12
|
+
date: 2010-01-06 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -45,19 +45,25 @@ files:
|
|
45
45
|
- lib/stonepath/config.rb
|
46
46
|
- lib/stonepath/controller_hooks.rb
|
47
47
|
- lib/stonepath/event_logging.rb
|
48
|
+
- lib/stonepath/extensions/action_controller.rb
|
49
|
+
- lib/stonepath/extensions/action_view.rb
|
48
50
|
- lib/stonepath/extensions/activerecordbase.rb
|
51
|
+
- lib/stonepath/extensions/kernel.rb
|
49
52
|
- lib/stonepath/group.rb
|
50
53
|
- lib/stonepath/role.rb
|
51
54
|
- lib/stonepath/task.rb
|
52
55
|
- lib/stonepath/work_bench.rb
|
53
56
|
- lib/stonepath/work_item.rb
|
54
57
|
- lib/stonepath/work_owner.rb
|
58
|
+
- rails/init.rb
|
55
59
|
- rails_generators/stonepath/stonepath_event_log_generator.rb
|
56
60
|
- rails_generators/stonepath/stonepath_task_generator.rb
|
61
|
+
- rails_generators/stonepath/stonepath_workitem_generator.rb
|
57
62
|
- rails_generators/stonepath/templates/create_event_records.rb
|
58
63
|
- rails_generators/stonepath/templates/event_record.rb
|
59
64
|
- rails_generators/stonepath/templates/generic_task.rb
|
60
65
|
- rails_generators/stonepath/templates/generic_task_migration.rb
|
66
|
+
- rails_generators/stonepath/templates/workitem_readme.txt
|
61
67
|
- script/console
|
62
68
|
- script/destroy
|
63
69
|
- script/generate
|