stonepath 0.4.1 → 0.4.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.
Files changed (41) hide show
  1. data/README.rdoc +2 -4
  2. data/Rakefile +3 -4
  3. data/VERSION +1 -1
  4. data/lib/stonepath.rb +2 -0
  5. metadata +3 -45
  6. data/rails_generators/stonepath_event_log/stonepath_event_log_generator.rb +0 -9
  7. data/rails_generators/stonepath_event_log/templates/create_event_records.rb +0 -17
  8. data/rails_generators/stonepath_event_log/templates/event_record.rb +0 -5
  9. data/rails_generators/stonepath_task/USAGE +0 -1
  10. data/rails_generators/stonepath_task/stonepath_task_generator.rb +0 -29
  11. data/rails_generators/stonepath_task/templates/generic_task.rb +0 -23
  12. data/rails_generators/stonepath_task/templates/generic_task_migration.rb +0 -36
  13. data/rails_generators/stonepath_workitem/USAGE +0 -51
  14. data/rails_generators/stonepath_workitem/stonepath_workitem_generator.rb +0 -196
  15. data/rails_generators/stonepath_workitem/templates/actions/create.rb +0 -9
  16. data/rails_generators/stonepath_workitem/templates/actions/destroy.rb +0 -6
  17. data/rails_generators/stonepath_workitem/templates/actions/edit.rb +0 -3
  18. data/rails_generators/stonepath_workitem/templates/actions/index.rb +0 -3
  19. data/rails_generators/stonepath_workitem/templates/actions/new.rb +0 -3
  20. data/rails_generators/stonepath_workitem/templates/actions/show.rb +0 -3
  21. data/rails_generators/stonepath_workitem/templates/actions/update.rb +0 -9
  22. data/rails_generators/stonepath_workitem/templates/controller.rb +0 -3
  23. data/rails_generators/stonepath_workitem/templates/event_controller.rb +0 -25
  24. data/rails_generators/stonepath_workitem/templates/fixtures.yml +0 -9
  25. data/rails_generators/stonepath_workitem/templates/helper.rb +0 -2
  26. data/rails_generators/stonepath_workitem/templates/migration.rb +0 -24
  27. data/rails_generators/stonepath_workitem/templates/model.rb +0 -33
  28. data/rails_generators/stonepath_workitem/templates/tests/testunit/actions/create.rb +0 -11
  29. data/rails_generators/stonepath_workitem/templates/tests/testunit/actions/destroy.rb +0 -6
  30. data/rails_generators/stonepath_workitem/templates/tests/testunit/actions/edit.rb +0 -4
  31. data/rails_generators/stonepath_workitem/templates/tests/testunit/actions/index.rb +0 -4
  32. data/rails_generators/stonepath_workitem/templates/tests/testunit/actions/new.rb +0 -4
  33. data/rails_generators/stonepath_workitem/templates/tests/testunit/actions/show.rb +0 -4
  34. data/rails_generators/stonepath_workitem/templates/tests/testunit/actions/update.rb +0 -11
  35. data/rails_generators/stonepath_workitem/templates/tests/testunit/controller.rb +0 -5
  36. data/rails_generators/stonepath_workitem/templates/tests/testunit/model.rb +0 -7
  37. data/rails_generators/stonepath_workitem/templates/views/erb/_form.html.erb +0 -10
  38. data/rails_generators/stonepath_workitem/templates/views/erb/edit.html.erb +0 -12
  39. data/rails_generators/stonepath_workitem/templates/views/erb/index.html.erb +0 -27
  40. data/rails_generators/stonepath_workitem/templates/views/erb/new.html.erb +0 -5
  41. data/rails_generators/stonepath_workitem/templates/views/erb/show.html.erb +0 -26
data/README.rdoc CHANGED
@@ -2,13 +2,11 @@
2
2
 
3
3
  State-based workflow for rails.
4
4
 
5
- UPDATE: The StonePath acl is being pulled out into a separate project called StoneWall.
6
- Update #2: Rather than reinvent a common wheel, StonePath now relies on the sentient_user gem.
5
+ As of verion 0.5.0, this supports Rails3. The only piece that needed to be upgrded was the generators, and with the new capabilities in rails3 generators, there will be a few new ones soon.
7
6
 
8
- For more information, check out the stonepath.pdf in this same directory. Stonepath is in real use and under active development, so improved docs will be arriving in this location shortly.
7
+ The testing harness in this app is a Rails 2.3.8 app. Upgrading these tests is going to be painful, but will happen over the next few weeks.
9
8
 
10
9
 
11
- gem install stonepath
12
10
 
13
11
  == LICENSE:
14
12
 
data/Rakefile CHANGED
@@ -13,10 +13,9 @@ begin
13
13
  gemspec.homepage = "http://github.com/bokmann/stonepath"
14
14
  gemspec.description = "Stateful workflow modeling for Rails"
15
15
  gemspec.authors = ["David Bock"]
16
- gemspec.add_dependency('activerecord','>= 2.0.0')
17
- gemspec.add_dependency('aasm','>= 2.1.3')
18
- gemspec.add_dependency('sentient_user','>= 0.1.0')
19
-
16
+ gemspec.add_dependency('activerecord','>= 3.0.0')
17
+ gemspec.add_dependency('aasm','>= 2.2.0')
18
+ gemspec.add_dependency('sentient_user','>= 0.3.2')
20
19
  end
21
20
 
22
21
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.1
1
+ 0.6.1
data/lib/stonepath.rb CHANGED
@@ -2,6 +2,8 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module StonePath
5
+ require 'stonepath/railtie' if defined?(Rails)
6
+
5
7
  # main hook into the framework. From here, this should simply have methods that cause other includes to happen.
6
8
  def self.included(base)
7
9
 
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stonepath
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 4
9
- - 1
10
- version: 0.4.1
8
+ - 2
9
+ version: 0.4.2
11
10
  platform: ruby
12
11
  authors:
13
12
  - David Bock
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-11-18 00:00:00 -05:00
17
+ date: 2011-01-30 00:00:00 -05:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 15
30
28
  segments:
31
29
  - 2
32
30
  - 0
@@ -42,7 +40,6 @@ dependencies:
42
40
  requirements:
43
41
  - - ">="
44
42
  - !ruby/object:Gem::Version
45
- hash: 13
46
43
  segments:
47
44
  - 2
48
45
  - 1
@@ -58,7 +55,6 @@ dependencies:
58
55
  requirements:
59
56
  - - ">="
60
57
  - !ruby/object:Gem::Version
61
- hash: 27
62
58
  segments:
63
59
  - 0
64
60
  - 1
@@ -93,42 +89,6 @@ files:
93
89
  - lib/stonepath/work_owner.rb
94
90
  - lib/tasks/stonepath.rake
95
91
  - rails/init.rb
96
- - rails_generators/stonepath_event_log/stonepath_event_log_generator.rb
97
- - rails_generators/stonepath_event_log/templates/create_event_records.rb
98
- - rails_generators/stonepath_event_log/templates/event_record.rb
99
- - rails_generators/stonepath_task/USAGE
100
- - rails_generators/stonepath_task/stonepath_task_generator.rb
101
- - rails_generators/stonepath_task/templates/generic_task.rb
102
- - rails_generators/stonepath_task/templates/generic_task_migration.rb
103
- - rails_generators/stonepath_workitem/USAGE
104
- - rails_generators/stonepath_workitem/stonepath_workitem_generator.rb
105
- - rails_generators/stonepath_workitem/templates/actions/create.rb
106
- - rails_generators/stonepath_workitem/templates/actions/destroy.rb
107
- - rails_generators/stonepath_workitem/templates/actions/edit.rb
108
- - rails_generators/stonepath_workitem/templates/actions/index.rb
109
- - rails_generators/stonepath_workitem/templates/actions/new.rb
110
- - rails_generators/stonepath_workitem/templates/actions/show.rb
111
- - rails_generators/stonepath_workitem/templates/actions/update.rb
112
- - rails_generators/stonepath_workitem/templates/controller.rb
113
- - rails_generators/stonepath_workitem/templates/event_controller.rb
114
- - rails_generators/stonepath_workitem/templates/fixtures.yml
115
- - rails_generators/stonepath_workitem/templates/helper.rb
116
- - rails_generators/stonepath_workitem/templates/migration.rb
117
- - rails_generators/stonepath_workitem/templates/model.rb
118
- - rails_generators/stonepath_workitem/templates/tests/testunit/actions/create.rb
119
- - rails_generators/stonepath_workitem/templates/tests/testunit/actions/destroy.rb
120
- - rails_generators/stonepath_workitem/templates/tests/testunit/actions/edit.rb
121
- - rails_generators/stonepath_workitem/templates/tests/testunit/actions/index.rb
122
- - rails_generators/stonepath_workitem/templates/tests/testunit/actions/new.rb
123
- - rails_generators/stonepath_workitem/templates/tests/testunit/actions/show.rb
124
- - rails_generators/stonepath_workitem/templates/tests/testunit/actions/update.rb
125
- - rails_generators/stonepath_workitem/templates/tests/testunit/controller.rb
126
- - rails_generators/stonepath_workitem/templates/tests/testunit/model.rb
127
- - rails_generators/stonepath_workitem/templates/views/erb/_form.html.erb
128
- - rails_generators/stonepath_workitem/templates/views/erb/edit.html.erb
129
- - rails_generators/stonepath_workitem/templates/views/erb/index.html.erb
130
- - rails_generators/stonepath_workitem/templates/views/erb/new.html.erb
131
- - rails_generators/stonepath_workitem/templates/views/erb/show.html.erb
132
92
  - script/console
133
93
  - script/destroy
134
94
  - script/generate
@@ -177,7 +137,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
137
  requirements:
178
138
  - - ">="
179
139
  - !ruby/object:Gem::Version
180
- hash: 3
181
140
  segments:
182
141
  - 0
183
142
  version: "0"
@@ -186,7 +145,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
145
  requirements:
187
146
  - - ">="
188
147
  - !ruby/object:Gem::Version
189
- hash: 3
190
148
  segments:
191
149
  - 0
192
150
  version: "0"
@@ -1,9 +0,0 @@
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,17 +0,0 @@
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
@@ -1,5 +0,0 @@
1
- class EventRecord < ActiveRecord::Base
2
- belongs_to :auditable, :polymorphic => true
3
- belongs_to :user
4
-
5
- end
@@ -1 +0,0 @@
1
- Usage goes here.
@@ -1,29 +0,0 @@
1
- class StonepathTaskGenerator < Rails::Generator::Base
2
-
3
-
4
- attr_accessor :name, :attributes
5
-
6
- def initialize(runtime_args, runtime_options = {})
7
- super
8
- usage if @args.empty?
9
-
10
- @name = @args.first
11
- @controller_actions = []
12
- @attributes = []
13
-
14
- @args[1..-1].each do |arg|
15
- if arg.include? ':'
16
- @attributes << Rails::Generator::GeneratedAttribute.new(*arg.split(":"))
17
- end
18
- end
19
-
20
- @attributes.uniq!
21
- end
22
-
23
- def manifest
24
- record do |m|
25
- m.template('generic_task.rb', "app/models/#{@name.tableize.singularize}.rb")
26
- m.migration_template("generic_task_migration.rb", "db/migrate", :migration_file_name => "create_#{@name.tableize}")
27
- end
28
- end
29
- end
@@ -1,23 +0,0 @@
1
- class <%= args[0].classify %> < ActiveRecord::Base
2
- include StonePath
3
-
4
- stonepath_task
5
-
6
- #logs_transitions # uncomment this if you generate the event log.
7
-
8
- attr_accessible :workitem, :workbench, <%= attributes.map { |a| ":#{a.name}" }.join(", ") %>
9
-
10
- # you might think 'overdue' should be a state, but no, part of the stonepath
11
- # methodology is that states should be as free of time definition as possible.
12
- # Thinking about it, this should make sense. Think of the conversation:
13
- # A: "That isn't done yet?"
14
- # B: "No, it's overdue"
15
- # A: "Well, where is it then?"
16
- # B: "It's still on Mike's desk, in process".
17
- #
18
- # so the state would be 'in process', even though it is 'overdue'.
19
- def overdue?
20
- (Time.now > due_at) && !self.completed?
21
- end
22
-
23
- end
@@ -1,36 +0,0 @@
1
- class Create<%= args[0].tableize.classify.pluralize %> < ActiveRecord::Migration
2
- def self.up
3
- create_table :<%= args[0].tableize %> do |t|
4
-
5
- # don't change these unless you want to get deep into meta in the
6
- # stonepath gem.
7
- t.string :aasm_state
8
- t.references :workitem, :polymorphic => true
9
- t.references :workbench, :polymorphic => true
10
-
11
- t.datetime :due_at
12
- t.datetime :completed_at
13
- t.timestamps
14
-
15
- # This "urgent at' concept was useful in one of the domains StonePath
16
- # was written/extracted from. The idea is thatm while something is 'due'
17
- # at a specific time, it might become urgent shortly before it is due.
18
- # In that domain, we color-coded tasks as green (due date is far out)
19
- # yellow (urgent timestap has passed), and red (overdue - due date
20
- # has passed). This won't become part of the framework, but I like the
21
- # idea so much I thought I'd comment it here until it gets in some
22
- # official documentation for 'advanced usage'.
23
- # t.datetime :urgent_at
24
-
25
- # Your attributes should be defined here.
26
- <%- for attribute in attributes -%>
27
- t.<%= attribute.type %> :<%= attribute.name %>
28
- <%- end -%>
29
-
30
- end
31
- end
32
-
33
- def self.down
34
- drop_table :<%= args[0].tableize %>
35
- end
36
- end
@@ -1,51 +0,0 @@
1
- Description:
2
- Scaffolds an entire resource, from model and migration to controller and
3
- views. The resource is ready to use as a starting point for your restful,
4
- resource-oriented application. Tests or specs are also generated depending
5
- on if you have a "spec" directory or not.
6
-
7
- IMPORTANT: This generator uses the "title" helper method which is generated
8
- by the nifty_layout generator. You may want to run that generator first.
9
-
10
- Usage:
11
- Pass the name of the model, either CamelCased or under_scored, as the first
12
- argument, and an optional list of attribute pairs and controller actions.
13
-
14
- If no controller actions are specified, they will default to index, show,
15
- new, create, edit, update, and destroy.
16
-
17
- IMPORTANT: If no attribute pairs are specified, no model will be generated.
18
- It will try to determine the attributes from an existing model.
19
-
20
- Attribute pairs are column_name:sql_type arguments specifying the
21
- model's attributes. Timestamps are added by default, so you don't have to
22
- specify them by hand as 'created_at:datetime updated_at:datetime'.
23
-
24
- For example, `nifty_scaffold post name:string content:text hidden:boolean`
25
- gives you a model with those three attributes, a controller that handles
26
- the create/show/update/destroy, forms to create and edit your posts, and
27
- an index that lists them all, as well as a map.resources :posts
28
- declaration in config/routes.rb.
29
-
30
- Adding an "!" in the mix of arguments will invert the passed controller
31
- actions. This will include all 7 controller actitons except the ones
32
- mentioned. This option doesn't effect model attributes.
33
-
34
- Examples:
35
- script/generate nifty_scaffold post
36
-
37
- Will create a controller called "posts" it will contain all seven
38
- CRUD actions along with the views. A model will NOT be created,
39
- instead it will look for an existing model and use those attributes.
40
-
41
- script/generate nifty_scaffold post name:string content:text index new edit
42
-
43
- Will create a Post model and migration file with the name and content
44
- attributes. It will also create a controller with index, new, create,
45
- edit, and update actions. Notice the create and update actions are
46
- added automatically with new and edit.
47
-
48
- script/generate nifty_scaffold post ! show new
49
-
50
- Creates a posts controller (no model) with index, edit, update, and
51
- destroy actions.
@@ -1,196 +0,0 @@
1
- class StonepathWorkitemGenerator < Rails::Generator::Base
2
-
3
- load File.expand_path( File.dirname(__FILE__)) + '/../../lib/stonepath/extensions/rails_generator_commands.rb'
4
-
5
- attr_accessor :name, :attributes
6
-
7
- def initialize(runtime_args, runtime_options = {})
8
- super
9
- usage if @args.empty?
10
-
11
- @name = @args.first
12
- @attributes = []
13
- @args[1..-1].each do |arg|
14
- if arg.include? ':'
15
- @attributes << Rails::Generator::GeneratedAttribute.new(*arg.split(":"))
16
- end
17
- end
18
- @attributes.uniq!
19
- @controller_actions = all_actions
20
- end
21
-
22
- def manifest
23
- record do |m|
24
-
25
- m.directory "app/models"
26
- m.template "model.rb", "app/models/#{singular_name}.rb"
27
- m.migration_template "migration.rb", "db/migrate", :migration_file_name => "create_#{plural_name}"
28
- m.directory "test/unit"
29
- m.template "tests/#{test_framework}/model.rb", "test/unit/#{singular_name}_test.rb"
30
- m.directory "test/fixtures"
31
- m.template "fixtures.yml", "test/fixtures/#{plural_name}.yml"
32
-
33
- m.directory "app/controllers"
34
- m.template "controller.rb", "app/controllers/#{plural_name}_controller.rb"
35
- m.template "event_controller.rb", "app/controllers/#{singular_name}_events_controller.rb"
36
-
37
- m.directory "app/helpers"
38
- m.template "helper.rb", "app/helpers/#{plural_name}_helper.rb"
39
-
40
- m.directory "app/views/#{plural_name}"
41
- @controller_actions.each do |action|
42
- if File.exist? source_path("views/#{view_language}/#{action}.html.#{view_language}")
43
- m.template "views/#{view_language}/#{action}.html.#{view_language}", "app/views/#{plural_name}/#{action}.html.#{view_language}"
44
- end
45
- end
46
-
47
- if form_partial?
48
- m.template "views/#{view_language}/_form.html.#{view_language}", "app/views/#{plural_name}/_form.html.#{view_language}"
49
- end
50
-
51
- m.route_stonepath_workitems plural_name
52
-
53
- m.directory "test/functional"
54
- m.template "tests/#{test_framework}/controller.rb", "test/functional/#{plural_name}_controller_test.rb"
55
- end
56
- end
57
-
58
- def form_partial?
59
- actions? :new, :edit
60
- end
61
-
62
- def all_actions
63
- %w[index show new create edit update destroy]
64
- end
65
-
66
- def action?(name)
67
- @controller_actions.include? name.to_s
68
- end
69
-
70
- def actions?(*names)
71
- names.all? { |n| action? n.to_s }
72
- end
73
-
74
- def singular_name
75
- name.underscore
76
- end
77
-
78
- def plural_name
79
- name.underscore.pluralize
80
- end
81
-
82
- def class_name
83
- name.camelize
84
- end
85
-
86
- def object_id_name
87
- (class_name.tableize.singularize + "_id")
88
- end
89
-
90
- def plural_class_name
91
- plural_name.camelize
92
- end
93
-
94
- def controller_methods(dir_name)
95
- @controller_actions.map do |action|
96
- read_template("#{dir_name}/#{action}.rb")
97
- end.join(" \n").strip
98
- end
99
-
100
- def render_form
101
- if form_partial?
102
- if options[:haml]
103
- "= render :partial => 'form'"
104
- else
105
- "<%= render :partial => 'form' %>"
106
- end
107
- else
108
- read_template("views/#{view_language}/_form.html.#{view_language}")
109
- end
110
- end
111
-
112
- def items_path(suffix = 'path')
113
- if action? :index
114
- "#{plural_name}_#{suffix}"
115
- else
116
- "root_#{suffix}"
117
- end
118
- end
119
-
120
- def item_path(suffix = 'path')
121
- if action? :show
122
- "@#{singular_name}"
123
- else
124
- items_path(suffix)
125
- end
126
- end
127
-
128
- def item_path_for_spec(suffix = 'path')
129
- if action? :show
130
- "#{singular_name}_#{suffix}(assigns[:#{singular_name}])"
131
- else
132
- items_path(suffix)
133
- end
134
- end
135
-
136
- def item_path_for_test(suffix = 'path')
137
- if action? :show
138
- "#{singular_name}_#{suffix}(assigns(:#{singular_name}))"
139
- else
140
- items_path(suffix)
141
- end
142
- end
143
-
144
- def model_columns_for_attributes
145
- class_name.constantize.columns.reject do |column|
146
- column.name.to_s =~ /^(id|created_at|updated_at)$/
147
- end
148
- end
149
-
150
- def rspec?
151
- test_framework == :rspec
152
- end
153
-
154
- protected
155
-
156
- def view_language
157
- options[:haml] ? 'haml' : 'erb'
158
- end
159
-
160
- def test_framework
161
- options[:test_framework] ||= default_test_framework
162
- end
163
-
164
- def default_test_framework
165
- File.exist?(destination_path("spec")) ? :rspec : :testunit
166
- end
167
-
168
- def add_options!(opt)
169
- opt.separator ''
170
- opt.separator 'Options:'
171
- # opt.on("--skip-model", "Don't generate a model or migration file.") { |v| options[:skip_model] = v }
172
- # opt.on("--skip-migration", "Don't generate migration file for model.") { |v| options[:skip_migration] = v }
173
- # opt.on("--skip-timestamps", "Don't add timestamps to migration file.") { |v| options[:skip_timestamps] = v }
174
- # opt.on("--skip-controller", "Don't generate controller, helper, or views.") { |v| options[:skip_controller] = v }
175
- # opt.on("--invert", "Generate all controller actions except these mentioned.") { |v| options[:invert] = v }
176
- # opt.on("--haml", "Generate HAML views instead of ERB.") { |v| options[:haml] = v }
177
- # opt.on("--testunit", "Use test/unit for test files.") { options[:test_framework] = :testunit }
178
- # opt.on("--rspec", "Use RSpec for test files.") { options[:test_framework] = :rspec }
179
- # opt.on("--shoulda", "Use Shoulda for test files.") { options[:test_framework] = :shoulda }
180
- end
181
-
182
- # is there a better way to do this? Perhaps with const_defined?
183
- def model_exists?
184
- File.exist? destination_path("app/models/#{singular_name}.rb")
185
- end
186
-
187
- def read_template(relative_path)
188
- ERB.new(File.read(source_path(relative_path)), nil, '-').result(binding)
189
- end
190
-
191
- def banner
192
- <<-EOS
193
- Creates a WorkItem as defined by the Stonepath Workflow Methodology
194
- EOS
195
- end
196
- end
@@ -1,9 +0,0 @@
1
- def create
2
- @<%= singular_name %> = <%= class_name %>.new(params[:<%= singular_name %>])
3
- if @<%= singular_name %>.save
4
- flash[:notice] = "Successfully created <%= name.underscore.humanize.downcase %>."
5
- redirect_to <%= item_path('url') %>
6
- else
7
- render :action => 'new'
8
- end
9
- end
@@ -1,6 +0,0 @@
1
- def destroy
2
- @<%= singular_name %> = <%= class_name %>.find(params[:id])
3
- @<%= singular_name %>.destroy
4
- flash[:notice] = "Successfully destroyed <%= name.underscore.humanize.downcase %>."
5
- redirect_to <%= items_path('url') %>
6
- end
@@ -1,3 +0,0 @@
1
- def edit
2
- @<%= singular_name %> = <%= class_name %>.find(params[:id])
3
- end
@@ -1,3 +0,0 @@
1
- def index
2
- @<%= plural_name %> = <%= class_name %>.all
3
- end
@@ -1,3 +0,0 @@
1
- def new
2
- @<%= singular_name %> = <%= class_name %>.new
3
- end
@@ -1,3 +0,0 @@
1
- def show
2
- @<%= singular_name %> = <%= class_name %>.find(params[:id])
3
- end
@@ -1,9 +0,0 @@
1
- def update
2
- @<%= singular_name %> = <%= class_name %>.find(params[:id])
3
- if @<%= singular_name %>.update_attributes(params[:<%= singular_name %>])
4
- flash[:notice] = "Successfully updated <%= name.underscore.humanize.downcase %>."
5
- redirect_to <%= item_path('url') %>
6
- else
7
- render :action => 'edit'
8
- end
9
- end
@@ -1,3 +0,0 @@
1
- class <%= plural_class_name %>Controller < ApplicationController
2
- <%= controller_methods :actions %>
3
- end
@@ -1,25 +0,0 @@
1
- # this is now your file to do with as you see fit. Before you modify it though, make sure you
2
- # understand how the nested restful routes are defined in the routes.rb file!
3
-
4
- class <%= class_name %>EventsController < ApplicationController
5
-
6
- def create
7
- if request.post?
8
- @object = <%= class_name %>.find(params[:<%= object_id_name %>])
9
- event = params[:id]
10
- if <%= class_name %>.aasm_events.keys.include?(event.to_sym)
11
- respond_to do |format|
12
- if @object.send(event + "!")
13
- flash[:notice] = "Event '#{event}' was successfully performed."
14
- format.html { redirect_to(@object) }
15
- format.xml { render :xml => @object }
16
- else
17
- flash[:notice] = "Event '#{event}' was NOT successfully performed."
18
- format.html { redirect_to(@object) }
19
- format.xml { render :xml => @object.errors, :status => :unprocessable_entity }
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,9 +0,0 @@
1
- one:
2
- <%- for attribute in attributes -%>
3
- <%= attribute.name %>: <%= attribute.default %>
4
- <%- end -%>
5
-
6
- two:
7
- <%- for attribute in attributes -%>
8
- <%= attribute.name %>: <%= attribute.default %>
9
- <%- end -%>
@@ -1,2 +0,0 @@
1
- module <%= plural_class_name %>Helper
2
- end
@@ -1,24 +0,0 @@
1
- class Create<%= plural_class_name %> < ActiveRecord::Migration
2
- def self.up
3
- create_table :<%= plural_name %> do |t|
4
- # These are the attributes of a workitem
5
- t.string :aasm_state
6
- t.integer :owner_id
7
-
8
- # Your attributes should be defined here.
9
- <%- for attribute in attributes -%>
10
- t.<%= attribute.type %> :<%= attribute.name %>
11
- <%- end -%>
12
- <%- unless options[:skip_timestamps] -%>
13
- t.timestamps
14
- <%- end -%>
15
- end
16
-
17
- #I'd like to create an index on aasm_state here.
18
- # you might optionally want to index owner_id
19
- end
20
-
21
- def self.down
22
- drop_table :<%= plural_name %>
23
- end
24
- end
@@ -1,33 +0,0 @@
1
- class <%= class_name %> < ActiveRecord::Base
2
- include StonePath
3
-
4
- stonepath_workitem do
5
- #owned_by :your_owning class
6
-
7
- #tasked_through :your_implementation_of_stonepath_task
8
-
9
- # This is an example trivial workflow. This is now yours to change as
10
- # you see fit.
11
- aasm_initial_state :pending
12
-
13
- aasm_state :pending
14
- aasm_state :in_process
15
- aasm_state :completed
16
-
17
- aasm_event :activate do
18
- transitions :to => :in_process, :from => :pending
19
- end
20
-
21
- aasm_event :complete do
22
- transitions :to => :completed, :from => :in_process
23
- end
24
-
25
- aasm_event :reactivate do
26
- transitions :to => :in_process, :from => :completed
27
- end
28
-
29
- end
30
-
31
- attr_accessible <%= attributes.map { |a| ":#{a.name}" }.join(", ") %>
32
-
33
- end
@@ -1,11 +0,0 @@
1
- def test_create_invalid
2
- <%= class_name %>.any_instance.stubs(:valid?).returns(false)
3
- post :create
4
- assert_template 'new'
5
- end
6
-
7
- def test_create_valid
8
- <%= class_name %>.any_instance.stubs(:valid?).returns(true)
9
- post :create
10
- assert_redirected_to <%= item_path_for_test('url') %>
11
- end
@@ -1,6 +0,0 @@
1
- def test_destroy
2
- <%= singular_name %> = <%= class_name %>.first
3
- delete :destroy, :id => <%= singular_name %>
4
- assert_redirected_to <%= items_path('url') %>
5
- assert !<%= class_name %>.exists?(<%= singular_name %>.id)
6
- end
@@ -1,4 +0,0 @@
1
- def test_edit
2
- get :edit, :id => <%= class_name %>.first
3
- assert_template 'edit'
4
- end
@@ -1,4 +0,0 @@
1
- def test_index
2
- get :index
3
- assert_template 'index'
4
- end
@@ -1,4 +0,0 @@
1
- def test_new
2
- get :new
3
- assert_template 'new'
4
- end
@@ -1,4 +0,0 @@
1
- def test_show
2
- get :show, :id => <%= class_name %>.first
3
- assert_template 'show'
4
- end
@@ -1,11 +0,0 @@
1
- def test_update_invalid
2
- <%= class_name %>.any_instance.stubs(:valid?).returns(false)
3
- put :update, :id => <%= class_name %>.first
4
- assert_template 'edit'
5
- end
6
-
7
- def test_update_valid
8
- <%= class_name %>.any_instance.stubs(:valid?).returns(true)
9
- put :update, :id => <%= class_name %>.first
10
- assert_redirected_to <%= item_path_for_test('url') %>
11
- end
@@ -1,5 +0,0 @@
1
- require 'test_helper'
2
-
3
- class <%= plural_class_name %>ControllerTest < ActionController::TestCase
4
- <%= controller_methods 'tests/testunit/actions' %>
5
- end
@@ -1,7 +0,0 @@
1
- require 'test_helper'
2
-
3
- class <%= class_name %>Test < ActiveSupport::TestCase
4
- def test_should_be_valid
5
- assert <%= class_name %>.new.valid?
6
- end
7
- end
@@ -1,10 +0,0 @@
1
- <%% form_for @<%= singular_name %> do |f| %>
2
- <%%= f.error_messages %>
3
- <%- for attribute in attributes -%>
4
- <p>
5
- <%%= f.label :<%= attribute.name %> %><br />
6
- <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
7
- </p>
8
- <%- end -%>
9
- <p><%%= f.submit "Submit" %></p>
10
- <%% end %>
@@ -1,12 +0,0 @@
1
- <%= render_form %>
2
-
3
- <%- if actions? :show, :index -%>
4
- <p>
5
- <%- if action? :show -%>
6
- <%%= link_to "Show", @<%= singular_name %> %> |
7
- <%- end -%>
8
- <%- if action? :index -%>
9
- <%%= link_to "View All", <%= plural_name %>_path %>
10
- <%- end -%>
11
- </p>
12
- <%- end -%>
@@ -1,27 +0,0 @@
1
- <table>
2
- <tr>
3
- <%- for attribute in attributes -%>
4
- <th><%= attribute.column.human_name.titleize %></th>
5
- <%- end -%>
6
- </tr>
7
- <%% for <%= singular_name %> in @<%= plural_name %> %>
8
- <tr>
9
- <%- for attribute in attributes -%>
10
- <td><%%=h <%= singular_name %>.<%= attribute.name %> %></td>
11
- <%- end -%>
12
- <%- if action? :show -%>
13
- <td><%%= link_to "Show", <%= singular_name %> %></td>
14
- <%- end -%>
15
- <%- if action? :edit -%>
16
- <td><%%= link_to "Edit", edit_<%= singular_name %>_path(<%= singular_name %>) %></td>
17
- <%- end -%>
18
- <%- if action? :destroy -%>
19
- <td><%%= link_to "Destroy", <%= singular_name %>, :confirm => 'Are you sure?', :method => :delete %></td>
20
- <%- end -%>
21
- </tr>
22
- <%% end %>
23
- </table>
24
-
25
- <%- if action? :new -%>
26
- <p><%%= link_to "New <%= singular_name.titleize %>", new_<%= singular_name %>_path %></p>
27
- <%- end -%>
@@ -1,5 +0,0 @@
1
- <%= render_form %>
2
-
3
- <%- if action? :index -%>
4
- <p><%%= link_to "Back to List", <%= plural_name %>_path %></p>
5
- <%- end -%>
@@ -1,26 +0,0 @@
1
- <%- for attribute in attributes -%>
2
- <p>
3
- <strong><%= attribute.column.human_name.titleize %>:</strong>
4
- <%%=h @<%= singular_name %>.<%= attribute.name %> %>
5
- </p>
6
- <%- end -%>
7
-
8
- <p>
9
- <strong>Current state: </strong><%%= @<%= singular_name %>.aasm_state.humanize %>
10
- </p>
11
-
12
- <p>
13
- <%% @<%= singular_name %>.aasm_events_for_current_state.each do |event| %>
14
- <%%= link_to_stonepath_event(@<%= singular_name %>, event) %> |
15
- <%% end %>
16
-
17
- <%- if action? :edit -%>
18
- <%%= link_to "Edit", edit_<%= singular_name %>_path(@<%= singular_name %>) %> |
19
- <%- end -%>
20
- <%- if action? :destroy -%>
21
- <%%= link_to "Destroy", @<%= singular_name %>, :confirm => 'Are you sure?', :method => :delete %> |
22
- <%- end -%>
23
- <%- if action? :index -%>
24
- <%%= link_to "View All", <%= plural_name %>_path %>
25
- <%- end -%>
26
- </p>