governor_states 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.
Files changed (78) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +24 -0
  4. data/Gemfile.lock +138 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +46 -0
  7. data/Rakefile +50 -0
  8. data/VERSION +1 -0
  9. data/app/helpers/governor_states_helper.rb +5 -0
  10. data/app/views/governor/articles/_current_state.html.erb +1 -0
  11. data/app/views/governor/articles/_states_form.html.erb +4 -0
  12. data/governor_states.gemspec +191 -0
  13. data/lib/generators/governor/add_state_generator.rb +27 -0
  14. data/lib/generators/governor/templates/assets/javascripts/governor-comments.js +7 -0
  15. data/lib/generators/governor/templates/assets/stylesheets/governor-comments.css +18 -0
  16. data/lib/generators/governor/templates/migrations/add_state_to_articles.rb +9 -0
  17. data/lib/generators/governor/templates/models/comment.rb +4 -0
  18. data/lib/generators/governor/templates/models/guest.rb +14 -0
  19. data/lib/governor_states.rb +34 -0
  20. data/lib/governor_states/rails.rb +7 -0
  21. data/spec/governor_states_spec.rb +9 -0
  22. data/spec/models/article_spec.rb +7 -0
  23. data/spec/rails_app/.gitignore +4 -0
  24. data/spec/rails_app/Gemfile +40 -0
  25. data/spec/rails_app/Gemfile.lock +100 -0
  26. data/spec/rails_app/README +256 -0
  27. data/spec/rails_app/Rakefile +7 -0
  28. data/spec/rails_app/app/controllers/application_controller.rb +3 -0
  29. data/spec/rails_app/app/controllers/home_controller.rb +2 -0
  30. data/spec/rails_app/app/helpers/application_helper.rb +2 -0
  31. data/spec/rails_app/app/helpers/home_helper.rb +2 -0
  32. data/spec/rails_app/app/models/article.rb +7 -0
  33. data/spec/rails_app/app/models/user.rb +9 -0
  34. data/spec/rails_app/app/views/home/index.html.erb +0 -0
  35. data/spec/rails_app/app/views/layouts/application.html.erb +22 -0
  36. data/spec/rails_app/config.ru +4 -0
  37. data/spec/rails_app/config/application.rb +42 -0
  38. data/spec/rails_app/config/boot.rb +14 -0
  39. data/spec/rails_app/config/database.yml +19 -0
  40. data/spec/rails_app/config/environment.rb +5 -0
  41. data/spec/rails_app/config/environments/development.rb +26 -0
  42. data/spec/rails_app/config/environments/production.rb +49 -0
  43. data/spec/rails_app/config/environments/test.rb +35 -0
  44. data/spec/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  45. data/spec/rails_app/config/initializers/devise.rb +142 -0
  46. data/spec/rails_app/config/initializers/governor.rb +36 -0
  47. data/spec/rails_app/config/initializers/inflections.rb +10 -0
  48. data/spec/rails_app/config/initializers/mime_types.rb +5 -0
  49. data/spec/rails_app/config/initializers/secret_token.rb +7 -0
  50. data/spec/rails_app/config/initializers/session_store.rb +8 -0
  51. data/spec/rails_app/config/locales/devise.en.yml +39 -0
  52. data/spec/rails_app/config/locales/en.yml +5 -0
  53. data/spec/rails_app/config/routes.rb +64 -0
  54. data/spec/rails_app/db/migrate/20110329032256_devise_create_users.rb +28 -0
  55. data/spec/rails_app/db/migrate/20110330020108_governor_create_articles.rb +15 -0
  56. data/spec/rails_app/db/migrate/20110515215457_governor_add_state_to_articles.rb +9 -0
  57. data/spec/rails_app/db/schema.rb +47 -0
  58. data/spec/rails_app/db/seeds.rb +7 -0
  59. data/spec/rails_app/lib/tasks/.gitkeep +0 -0
  60. data/spec/rails_app/public/404.html +26 -0
  61. data/spec/rails_app/public/422.html +26 -0
  62. data/spec/rails_app/public/500.html +26 -0
  63. data/spec/rails_app/public/favicon.ico +0 -0
  64. data/spec/rails_app/public/images/rails.png +0 -0
  65. data/spec/rails_app/public/javascripts/application.js +2 -0
  66. data/spec/rails_app/public/javascripts/controls.js +965 -0
  67. data/spec/rails_app/public/javascripts/dragdrop.js +974 -0
  68. data/spec/rails_app/public/javascripts/effects.js +1123 -0
  69. data/spec/rails_app/public/javascripts/prototype.js +6001 -0
  70. data/spec/rails_app/public/javascripts/rails.js +191 -0
  71. data/spec/rails_app/public/robots.txt +5 -0
  72. data/spec/rails_app/public/stylesheets/.gitkeep +0 -0
  73. data/spec/rails_app/script/rails +6 -0
  74. data/spec/rails_app/spec/factories.rb +11 -0
  75. data/spec/rails_app/vendor/plugins/.gitkeep +0 -0
  76. data/spec/spec_helper.rb +19 -0
  77. data/spec/views/governor/articles/new.html.erb_spec.rb +30 -0
  78. metadata +393 -0
@@ -0,0 +1,191 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+
176
+ Ajax.Responders.register({
177
+ onCreate: function(request) {
178
+ var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
179
+
180
+ if (csrf_meta_tag) {
181
+ var header = 'X-CSRF-Token',
182
+ token = csrf_meta_tag.readAttribute('content');
183
+
184
+ if (!request.options.requestHeaders) {
185
+ request.options.requestHeaders = {};
186
+ }
187
+ request.options.requestHeaders[header] = token;
188
+ }
189
+ }
190
+ });
191
+ })();
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ factory :article do |a|
3
+ a.title "Some article"
4
+ end
5
+
6
+ factory :user do |u|
7
+ u.email 'blago@mayor.cityofchicago.org'
8
+ u.password 'ca$hmoney'
9
+ u.password_confirmation 'ca$hmoney'
10
+ end
11
+ end
File without changes
@@ -0,0 +1,19 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+
3
+ require File.expand_path('../rails_app/config/environment.rb', __FILE__)
4
+
5
+ require 'bundler'
6
+ Bundler.setup
7
+
8
+ require 'rspec'
9
+ require 'rspec/rails'
10
+
11
+ Dir[Rails.root.join('spec/support/**/*.rb')].each {|f| require f}
12
+
13
+ ActiveRecord::Migrator.migrate File.expand_path('../rails_app/db/migrate/', __FILE__)
14
+
15
+ RSpec.configure do |config|
16
+ config.mock_with :mocha
17
+
18
+ config.use_transactional_fixtures = true
19
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ class ActionView::Base
4
+ include Governor::Controllers::Helpers
5
+ include GovernorStatesHelper
6
+
7
+ def params
8
+ {:governor_mapping => :articles}
9
+ end
10
+ end
11
+
12
+ module Governor
13
+ describe "governor/articles/new.html.erb" do
14
+ include Devise::TestHelpers
15
+
16
+ before(:each) do
17
+ @user = Factory(:user)
18
+ @article = Factory.build(:article, :author => @user)
19
+ assign(:article, @article)
20
+ controller.stubs(:action_name).returns('new')
21
+ sign_in @user
22
+ render
23
+ end
24
+
25
+
26
+ it "allows you to set the state" do
27
+ rendered.should =~ /State/
28
+ end
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,393 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: governor_states
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Liam Morley
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-15 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ type: :runtime
23
+ prerelease: false
24
+ name: rails
25
+ version_requirements: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 13
31
+ segments:
32
+ - 3
33
+ - 0
34
+ - 5
35
+ version: 3.0.5
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ type: :runtime
39
+ prerelease: false
40
+ name: governor
41
+ version_requirements: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 7
47
+ segments:
48
+ - 0
49
+ - 5
50
+ - 6
51
+ version: 0.5.6
52
+ requirement: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ type: :runtime
55
+ prerelease: false
56
+ name: state_machine
57
+ version_requirements: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
66
+ requirement: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ type: :development
69
+ prerelease: false
70
+ name: jeweler
71
+ version_requirements: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ hash: 7
77
+ segments:
78
+ - 1
79
+ - 5
80
+ - 2
81
+ version: 1.5.2
82
+ requirement: *id004
83
+ - !ruby/object:Gem::Dependency
84
+ type: :development
85
+ prerelease: false
86
+ name: sqlite3
87
+ version_requirements: &id005 !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ hash: 3
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ requirement: *id005
97
+ - !ruby/object:Gem::Dependency
98
+ type: :development
99
+ prerelease: false
100
+ name: rspec-rails
101
+ version_requirements: &id006 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: 3
107
+ segments:
108
+ - 0
109
+ version: "0"
110
+ requirement: *id006
111
+ - !ruby/object:Gem::Dependency
112
+ type: :development
113
+ prerelease: false
114
+ name: rcov
115
+ version_requirements: &id007 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ hash: 3
121
+ segments:
122
+ - 0
123
+ version: "0"
124
+ requirement: *id007
125
+ - !ruby/object:Gem::Dependency
126
+ type: :development
127
+ prerelease: false
128
+ name: webrat
129
+ version_requirements: &id008 !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ hash: 3
135
+ segments:
136
+ - 0
137
+ version: "0"
138
+ requirement: *id008
139
+ - !ruby/object:Gem::Dependency
140
+ type: :development
141
+ prerelease: false
142
+ name: mocha
143
+ version_requirements: &id009 !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ hash: 3
149
+ segments:
150
+ - 0
151
+ version: "0"
152
+ requirement: *id009
153
+ - !ruby/object:Gem::Dependency
154
+ type: :development
155
+ prerelease: false
156
+ name: factory_girl
157
+ version_requirements: &id010 !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ~>
161
+ - !ruby/object:Gem::Version
162
+ hash: 31098209
163
+ segments:
164
+ - 2
165
+ - 0
166
+ - 0
167
+ - beta
168
+ version: 2.0.0.beta
169
+ requirement: *id010
170
+ - !ruby/object:Gem::Dependency
171
+ type: :development
172
+ prerelease: false
173
+ name: factory_girl_rails
174
+ version_requirements: &id011 !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ~>
178
+ - !ruby/object:Gem::Version
179
+ hash: 31098141
180
+ segments:
181
+ - 1
182
+ - 1
183
+ - beta
184
+ version: 1.1.beta
185
+ requirement: *id011
186
+ - !ruby/object:Gem::Dependency
187
+ type: :development
188
+ prerelease: false
189
+ name: activerecord-nulldb-adapter
190
+ version_requirements: &id012 !ruby/object:Gem::Requirement
191
+ none: false
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ hash: 3
196
+ segments:
197
+ - 0
198
+ version: "0"
199
+ requirement: *id012
200
+ - !ruby/object:Gem::Dependency
201
+ type: :development
202
+ prerelease: false
203
+ name: governor_states
204
+ version_requirements: &id013 !ruby/object:Gem::Requirement
205
+ none: false
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ hash: 3
210
+ segments:
211
+ - 0
212
+ version: "0"
213
+ requirement: *id013
214
+ - !ruby/object:Gem::Dependency
215
+ type: :development
216
+ prerelease: false
217
+ name: devise
218
+ version_requirements: &id014 !ruby/object:Gem::Requirement
219
+ none: false
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ hash: 3
224
+ segments:
225
+ - 0
226
+ version: "0"
227
+ requirement: *id014
228
+ - !ruby/object:Gem::Dependency
229
+ type: :development
230
+ prerelease: false
231
+ name: dynamic_form
232
+ version_requirements: &id015 !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ hash: 3
238
+ segments:
239
+ - 0
240
+ version: "0"
241
+ requirement: *id015
242
+ description: Adds state machine support to Governor, the Rails 3-based blogging engine, enabling you to draft/publish/hide articles.
243
+ email: liam@carpeliam.com
244
+ executables: []
245
+
246
+ extensions: []
247
+
248
+ extra_rdoc_files:
249
+ - LICENSE.txt
250
+ - README.rdoc
251
+ files:
252
+ - .document
253
+ - .rspec
254
+ - Gemfile
255
+ - Gemfile.lock
256
+ - LICENSE.txt
257
+ - README.rdoc
258
+ - Rakefile
259
+ - VERSION
260
+ - app/helpers/governor_states_helper.rb
261
+ - app/views/governor/articles/_current_state.html.erb
262
+ - app/views/governor/articles/_states_form.html.erb
263
+ - governor_states.gemspec
264
+ - lib/generators/governor/add_state_generator.rb
265
+ - lib/generators/governor/templates/assets/javascripts/governor-comments.js
266
+ - lib/generators/governor/templates/assets/stylesheets/governor-comments.css
267
+ - lib/generators/governor/templates/migrations/add_state_to_articles.rb
268
+ - lib/generators/governor/templates/models/comment.rb
269
+ - lib/generators/governor/templates/models/guest.rb
270
+ - lib/governor_states.rb
271
+ - lib/governor_states/rails.rb
272
+ - spec/governor_states_spec.rb
273
+ - spec/models/article_spec.rb
274
+ - spec/rails_app/.gitignore
275
+ - spec/rails_app/Gemfile
276
+ - spec/rails_app/Gemfile.lock
277
+ - spec/rails_app/README
278
+ - spec/rails_app/Rakefile
279
+ - spec/rails_app/app/controllers/application_controller.rb
280
+ - spec/rails_app/app/controllers/home_controller.rb
281
+ - spec/rails_app/app/helpers/application_helper.rb
282
+ - spec/rails_app/app/helpers/home_helper.rb
283
+ - spec/rails_app/app/models/article.rb
284
+ - spec/rails_app/app/models/user.rb
285
+ - spec/rails_app/app/views/home/index.html.erb
286
+ - spec/rails_app/app/views/layouts/application.html.erb
287
+ - spec/rails_app/config.ru
288
+ - spec/rails_app/config/application.rb
289
+ - spec/rails_app/config/boot.rb
290
+ - spec/rails_app/config/database.yml
291
+ - spec/rails_app/config/environment.rb
292
+ - spec/rails_app/config/environments/development.rb
293
+ - spec/rails_app/config/environments/production.rb
294
+ - spec/rails_app/config/environments/test.rb
295
+ - spec/rails_app/config/initializers/backtrace_silencers.rb
296
+ - spec/rails_app/config/initializers/devise.rb
297
+ - spec/rails_app/config/initializers/governor.rb
298
+ - spec/rails_app/config/initializers/inflections.rb
299
+ - spec/rails_app/config/initializers/mime_types.rb
300
+ - spec/rails_app/config/initializers/secret_token.rb
301
+ - spec/rails_app/config/initializers/session_store.rb
302
+ - spec/rails_app/config/locales/devise.en.yml
303
+ - spec/rails_app/config/locales/en.yml
304
+ - spec/rails_app/config/routes.rb
305
+ - spec/rails_app/db/migrate/20110329032256_devise_create_users.rb
306
+ - spec/rails_app/db/migrate/20110330020108_governor_create_articles.rb
307
+ - spec/rails_app/db/migrate/20110515215457_governor_add_state_to_articles.rb
308
+ - spec/rails_app/db/schema.rb
309
+ - spec/rails_app/db/seeds.rb
310
+ - spec/rails_app/lib/tasks/.gitkeep
311
+ - spec/rails_app/public/404.html
312
+ - spec/rails_app/public/422.html
313
+ - spec/rails_app/public/500.html
314
+ - spec/rails_app/public/favicon.ico
315
+ - spec/rails_app/public/images/rails.png
316
+ - spec/rails_app/public/javascripts/application.js
317
+ - spec/rails_app/public/javascripts/controls.js
318
+ - spec/rails_app/public/javascripts/dragdrop.js
319
+ - spec/rails_app/public/javascripts/effects.js
320
+ - spec/rails_app/public/javascripts/prototype.js
321
+ - spec/rails_app/public/javascripts/rails.js
322
+ - spec/rails_app/public/robots.txt
323
+ - spec/rails_app/public/stylesheets/.gitkeep
324
+ - spec/rails_app/script/rails
325
+ - spec/rails_app/spec/factories.rb
326
+ - spec/rails_app/vendor/plugins/.gitkeep
327
+ - spec/spec_helper.rb
328
+ - spec/views/governor/articles/new.html.erb_spec.rb
329
+ has_rdoc: true
330
+ homepage: http://github.com/carpeliam/governor_states
331
+ licenses:
332
+ - MIT
333
+ post_install_message:
334
+ rdoc_options: []
335
+
336
+ require_paths:
337
+ - lib
338
+ required_ruby_version: !ruby/object:Gem::Requirement
339
+ none: false
340
+ requirements:
341
+ - - ">="
342
+ - !ruby/object:Gem::Version
343
+ hash: 3
344
+ segments:
345
+ - 0
346
+ version: "0"
347
+ required_rubygems_version: !ruby/object:Gem::Requirement
348
+ none: false
349
+ requirements:
350
+ - - ">="
351
+ - !ruby/object:Gem::Version
352
+ hash: 3
353
+ segments:
354
+ - 0
355
+ version: "0"
356
+ requirements: []
357
+
358
+ rubyforge_project:
359
+ rubygems_version: 1.3.7
360
+ signing_key:
361
+ specification_version: 3
362
+ summary: Adds state machine support to the Governor blogging engine.
363
+ test_files:
364
+ - spec/governor_states_spec.rb
365
+ - spec/models/article_spec.rb
366
+ - spec/rails_app/app/controllers/application_controller.rb
367
+ - spec/rails_app/app/controllers/home_controller.rb
368
+ - spec/rails_app/app/helpers/application_helper.rb
369
+ - spec/rails_app/app/helpers/home_helper.rb
370
+ - spec/rails_app/app/models/article.rb
371
+ - spec/rails_app/app/models/user.rb
372
+ - spec/rails_app/config/application.rb
373
+ - spec/rails_app/config/boot.rb
374
+ - spec/rails_app/config/environment.rb
375
+ - spec/rails_app/config/environments/development.rb
376
+ - spec/rails_app/config/environments/production.rb
377
+ - spec/rails_app/config/environments/test.rb
378
+ - spec/rails_app/config/initializers/backtrace_silencers.rb
379
+ - spec/rails_app/config/initializers/devise.rb
380
+ - spec/rails_app/config/initializers/governor.rb
381
+ - spec/rails_app/config/initializers/inflections.rb
382
+ - spec/rails_app/config/initializers/mime_types.rb
383
+ - spec/rails_app/config/initializers/secret_token.rb
384
+ - spec/rails_app/config/initializers/session_store.rb
385
+ - spec/rails_app/config/routes.rb
386
+ - spec/rails_app/db/migrate/20110329032256_devise_create_users.rb
387
+ - spec/rails_app/db/migrate/20110330020108_governor_create_articles.rb
388
+ - spec/rails_app/db/migrate/20110515215457_governor_add_state_to_articles.rb
389
+ - spec/rails_app/db/schema.rb
390
+ - spec/rails_app/db/seeds.rb
391
+ - spec/rails_app/spec/factories.rb
392
+ - spec/spec_helper.rb
393
+ - spec/views/governor/articles/new.html.erb_spec.rb