level_up 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/CHANGELOG.txt +2 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +190 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/images/level_up/search.png +0 -0
  6. data/app/assets/javascripts/level_up/application.js +15 -0
  7. data/app/assets/javascripts/level_up/home.js +2 -0
  8. data/app/assets/javascripts/level_up/jobs.js +2 -0
  9. data/app/assets/stylesheets/level_up/application.css.scss +446 -0
  10. data/app/assets/stylesheets/level_up/home.css.scss +119 -0
  11. data/app/assets/stylesheets/level_up/jobs.css.scss +159 -0
  12. data/app/assets/stylesheets/level_up/rwdgrid.css +403 -0
  13. data/app/controllers/level_up/application_controller.rb +4 -0
  14. data/app/controllers/level_up/home_controller.rb +22 -0
  15. data/app/controllers/level_up/jobs_controller.rb +117 -0
  16. data/app/helpers/level_up/application_helper.rb +7 -0
  17. data/app/helpers/level_up/home_helper.rb +7 -0
  18. data/app/helpers/level_up/jobs_helper.rb +4 -0
  19. data/app/models/level_up/job.rb +212 -0
  20. data/app/models/level_up/state/cancel.rb +7 -0
  21. data/app/models/level_up/state/end.rb +7 -0
  22. data/app/models/level_up/state/start.rb +9 -0
  23. data/app/models/level_up/state.rb +53 -0
  24. data/app/views/layouts/level_up/_footer.html.erb +9 -0
  25. data/app/views/layouts/level_up/_header.html.erb +23 -0
  26. data/app/views/layouts/level_up/application.html.erb +36 -0
  27. data/app/views/level_up/home/index.html.erb +85 -0
  28. data/app/views/level_up/home/workflow.html.erb +5 -0
  29. data/app/views/level_up/jobs/edit.html.erb +65 -0
  30. data/app/views/level_up/jobs/index.html.erb +73 -0
  31. data/app/views/level_up/jobs/show.html.erb +93 -0
  32. data/config/routes.rb +13 -0
  33. data/db/migrate/20130212111454_create_level_up_jobs.rb +27 -0
  34. data/lib/level_up/configuration.rb +27 -0
  35. data/lib/level_up/engine.rb +17 -0
  36. data/lib/level_up/version.rb +3 -0
  37. data/lib/level_up.rb +7 -0
  38. data/lib/tasks/level_up_tasks.rake +4 -0
  39. data/test/dummy/README.rdoc +261 -0
  40. data/test/dummy/Rakefile +7 -0
  41. data/test/dummy/app/assets/javascripts/application.js +15 -0
  42. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  43. data/test/dummy/app/controllers/application_controller.rb +3 -0
  44. data/test/dummy/app/helpers/application_helper.rb +2 -0
  45. data/test/dummy/app/jobs/account_banish.rb +18 -0
  46. data/test/dummy/app/jobs/account_downgrade.rb +13 -0
  47. data/test/dummy/app/jobs/account_upgrade.rb +15 -0
  48. data/test/dummy/app/jobs/mailing_list_subscription.rb +15 -0
  49. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  50. data/test/dummy/config/application.rb +59 -0
  51. data/test/dummy/config/boot.rb +10 -0
  52. data/test/dummy/config/database.yml +25 -0
  53. data/test/dummy/config/environment.rb +5 -0
  54. data/test/dummy/config/environments/development.rb +41 -0
  55. data/test/dummy/config/environments/production.rb +67 -0
  56. data/test/dummy/config/environments/test.rb +37 -0
  57. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  58. data/test/dummy/config/initializers/inflections.rb +15 -0
  59. data/test/dummy/config/initializers/mime_types.rb +5 -0
  60. data/test/dummy/config/initializers/secret_token.rb +7 -0
  61. data/test/dummy/config/initializers/session_store.rb +8 -0
  62. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  63. data/test/dummy/config/locales/en.yml +5 -0
  64. data/test/dummy/config/routes.rb +4 -0
  65. data/test/dummy/config.ru +4 -0
  66. data/test/dummy/db/migrate/20130212113009_create_delayed_jobs.rb +22 -0
  67. data/test/dummy/db/migrate/20130215111404_create_level_up_jobs.level_up.rb +28 -0
  68. data/test/dummy/db/schema.rb +57 -0
  69. data/test/dummy/public/404.html +26 -0
  70. data/test/dummy/public/422.html +26 -0
  71. data/test/dummy/public/500.html +25 -0
  72. data/test/dummy/public/favicon.ico +0 -0
  73. data/test/dummy/script/delayed_job +5 -0
  74. data/test/dummy/script/rails +6 -0
  75. data/test/fixtures/level_up/jobs.yml +11 -0
  76. data/test/functional/level_up/home_controller_test.rb +9 -0
  77. data/test/functional/level_up/jobs_controller_test.rb +9 -0
  78. data/test/integration/navigation_test.rb +10 -0
  79. data/test/level_up_test.rb +7 -0
  80. data/test/test_helper.rb +15 -0
  81. data/test/unit/helpers/level_up/home_helper_test.rb +6 -0
  82. data/test/unit/helpers/level_up/jobs_helper_test.rb +6 -0
  83. data/test/unit/level_up/job_test.rb +208 -0
  84. metadata +333 -0
@@ -0,0 +1,208 @@
1
+ require 'test_helper'
2
+ require 'delayed_job_active_record'
3
+
4
+
5
+ module LevelUp
6
+ class TestJob < Job
7
+ job do
8
+ state :start, moves_to: :first_node
9
+ state :first_node, moves_to: [:second_node, :error_node, :timer_node, :task_node]
10
+ state :second_node, moves_to: [:end]
11
+ state :error_node
12
+ state :timer_node
13
+ state :task_node
14
+ end
15
+
16
+ def second_node
17
+ move_to :end
18
+ end
19
+ end
20
+
21
+ class AbstractFirstNode < State
22
+ def run
23
+ move_to :second_node
24
+ end
25
+ end
26
+
27
+ class TestJob::FirstNode < AbstractFirstNode
28
+ end
29
+
30
+ class TestJob::ErrorNode < State
31
+ def run
32
+ raise "bad news"
33
+ end
34
+ end
35
+
36
+ class TestJob::TimerNode < State
37
+ def run
38
+ retry_in 1.hour
39
+ end
40
+ end
41
+
42
+ class TestJob::TaskNode < State
43
+ def run
44
+ manual_task "a lot of work"
45
+ end
46
+ end
47
+
48
+ class LevelUpTest < ActiveSupport::TestCase
49
+ def setup
50
+ @job = TestJob.new
51
+ @job.save
52
+ end
53
+
54
+ test "should return the schema" do
55
+ assert_equal({
56
+ start: [:first_node],
57
+ first_node: [:second_node, :error_node, :timer_node, :task_node],
58
+ second_node: [:end],
59
+ error_node: [],
60
+ timer_node: [],
61
+ task_node: [],
62
+ end: []
63
+ }, @job.schema)
64
+ end
65
+
66
+ test "should return the list of states" do
67
+ assert_equal([:start, :first_node, :second_node, :error_node, :timer_node, :task_node, :end], @job.states)
68
+ end
69
+
70
+ test "should return list of transitions for a given state" do
71
+ assert_equal([:first_node], @job.transitions(:start))
72
+ assert_equal([:first_node], @job.state_transitions)
73
+
74
+ @job.state = "first_node"
75
+ assert_equal([:second_node, :error_node, :timer_node, :task_node], @job.transitions(:first_node))
76
+ assert_equal([:second_node, :error_node, :timer_node, :task_node], @job.state_transitions)
77
+
78
+ @job.state = "second_node"
79
+ assert_equal([:end], @job.transitions(:second_node))
80
+ assert_equal([:end], @job.state_transitions)
81
+
82
+ @job.state = "error_node"
83
+ assert_equal([], @job.transitions(:error_node))
84
+ assert_equal([], @job.state_transitions)
85
+
86
+ @job.state = "timer_node"
87
+ assert_equal([], @job.transitions(:timer_node))
88
+ assert_equal([], @job.state_transitions)
89
+
90
+ @job.state = "task_node"
91
+ assert_equal([], @job.transitions(:task_node))
92
+ assert_equal([], @job.state_transitions)
93
+
94
+ @job.state = "end"
95
+ assert_equal([], @job.transitions(:end))
96
+ assert_equal([], @job.state_transitions)
97
+ end
98
+
99
+ test "should raise a state not found error" do
100
+ error = assert_raise(StateNotFound) { @job.transitions(:unknown_state) }
101
+ assert_match("unknown_state", error.message)
102
+ end
103
+
104
+ test "should set the started_at attribute when starting a job" do
105
+ assert_nil(@job.started_at)
106
+ @job.boot!
107
+ assert_not_nil(@job.started_at)
108
+ end
109
+
110
+ test "should change state" do
111
+ assert_equal(true, @job.state?(:start))
112
+ @job.boot!
113
+ assert_equal(true, @job.state?(:end))
114
+ end
115
+
116
+ test "should set the end_at attribute when ending a job" do
117
+ assert_nil(@job.ended_at)
118
+ @job.boot!
119
+ assert_not_nil(@job.ended_at)
120
+ end
121
+
122
+ test "should set the error attribute when rescuing from an error" do
123
+ assert_equal(false, @job.error)
124
+ assert_nil(@job.failed_at)
125
+ assert_nil(@job.failed_in)
126
+ assert_nil(@job.backtrace)
127
+
128
+ @job.state = "error_node"
129
+ @job.boot!
130
+ assert_equal(true, @job.error)
131
+ assert_not_nil(@job.failed_at)
132
+ assert_equal("error_node", @job.failed_in)
133
+ assert_not_nil(@job.backtrace)
134
+ end
135
+
136
+ test "should set the timer attribute when retrying a state" do
137
+ assert_equal(false, @job.timer)
138
+ assert_nil(@job.retry_at)
139
+ assert_nil(@job.delayed_job_id)
140
+
141
+ @job.state = "timer_node"
142
+ @job.boot!
143
+ assert_equal(true, @job.timer)
144
+ assert_not_nil(@job.retry_at)
145
+ assert_not_nil(@job.delayed_job_id)
146
+ end
147
+
148
+ test "should set the task and description attributes when falling in human manual task" do
149
+ assert_equal(false, @job.task)
150
+ assert_nil(@job.task_description)
151
+
152
+ @job.state = "task_node"
153
+ @job.boot!
154
+ assert_equal(true, @job.task)
155
+ assert_not_nil(@job.task_description)
156
+ end
157
+
158
+ test "should disallow transition" do
159
+ assert_equal(true, @job.state?(:start))
160
+ @job.event!(nil, false)
161
+ assert_equal(true, @job.state?(:start))
162
+ end
163
+
164
+ test "should allow transition" do
165
+ assert_equal(true, @job.state?(:start))
166
+ @job.event!(nil, true)
167
+ assert_equal(true, @job.state?(:end))
168
+ end
169
+
170
+ test "should disallow retry" do
171
+ assert_equal(false, @job.timer)
172
+ assert_nil(@job.retry_at)
173
+ @job.state = "timer_node"
174
+
175
+ @job.event!(nil, true, false)
176
+ assert_equal(false, @job.timer)
177
+ assert_nil(@job.retry_at)
178
+ assert_nil(@job.delayed_job_id)
179
+ end
180
+
181
+ test "should allow retry" do
182
+ assert_equal(false, @job.timer)
183
+ assert_nil(@job.retry_at)
184
+ @job.state = "timer_node"
185
+
186
+ @job.event!(nil, true, true)
187
+ assert_equal(true, @job.timer)
188
+ assert_not_nil(@job.retry_at)
189
+ assert_not_nil(@job.delayed_job_id)
190
+ end
191
+
192
+ test "should have a delayed_job" do
193
+ assert_nil(@job.delayed_job_id)
194
+ delay = @job.boot_async!
195
+ assert_equal(true, delay)
196
+ assert_not_nil(@job.delayed_job_id)
197
+ end
198
+
199
+ test "should destroy a delayed_job" do
200
+ delay = @job.boot_async!
201
+ assert_equal(true, delay)
202
+ assert_not_nil(@job.delayed_job_id)
203
+
204
+ @job.unqueue!
205
+ assert_nil(@job.delayed_job_id)
206
+ end
207
+ end
208
+ end
metadata ADDED
@@ -0,0 +1,333 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: level_up
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Karim Matrah
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - !ruby/object:Gem::Dependency
31
+ name: jquery-rails
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: sass-rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: meta_search
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: kaminari
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: ruby-graphviz
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: delayed_job
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '3.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '3.0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: delayed_job_active_record
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: '0.3'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: '0.3'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rake
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: sqlite3
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ description: A rails engine to structure, run and manage asynchronous jobs
175
+ email:
176
+ - karim.matrah@gmail.com
177
+ executables: []
178
+ extensions: []
179
+ extra_rdoc_files: []
180
+ files:
181
+ - app/assets/images/level_up/search.png
182
+ - app/assets/javascripts/level_up/application.js
183
+ - app/assets/javascripts/level_up/home.js
184
+ - app/assets/javascripts/level_up/jobs.js
185
+ - app/assets/stylesheets/level_up/application.css.scss
186
+ - app/assets/stylesheets/level_up/home.css.scss
187
+ - app/assets/stylesheets/level_up/jobs.css.scss
188
+ - app/assets/stylesheets/level_up/rwdgrid.css
189
+ - app/controllers/level_up/application_controller.rb
190
+ - app/controllers/level_up/home_controller.rb
191
+ - app/controllers/level_up/jobs_controller.rb
192
+ - app/helpers/level_up/application_helper.rb
193
+ - app/helpers/level_up/home_helper.rb
194
+ - app/helpers/level_up/jobs_helper.rb
195
+ - app/models/level_up/job.rb
196
+ - app/models/level_up/state/cancel.rb
197
+ - app/models/level_up/state/end.rb
198
+ - app/models/level_up/state/start.rb
199
+ - app/models/level_up/state.rb
200
+ - app/views/layouts/level_up/_footer.html.erb
201
+ - app/views/layouts/level_up/_header.html.erb
202
+ - app/views/layouts/level_up/application.html.erb
203
+ - app/views/level_up/home/index.html.erb
204
+ - app/views/level_up/home/workflow.html.erb
205
+ - app/views/level_up/jobs/edit.html.erb
206
+ - app/views/level_up/jobs/index.html.erb
207
+ - app/views/level_up/jobs/show.html.erb
208
+ - config/routes.rb
209
+ - db/migrate/20130212111454_create_level_up_jobs.rb
210
+ - lib/level_up/configuration.rb
211
+ - lib/level_up/engine.rb
212
+ - lib/level_up/version.rb
213
+ - lib/level_up.rb
214
+ - lib/tasks/level_up_tasks.rake
215
+ - LICENSE.txt
216
+ - Rakefile
217
+ - README.md
218
+ - CHANGELOG.txt
219
+ - test/dummy/app/assets/javascripts/application.js
220
+ - test/dummy/app/assets/stylesheets/application.css
221
+ - test/dummy/app/controllers/application_controller.rb
222
+ - test/dummy/app/helpers/application_helper.rb
223
+ - test/dummy/app/jobs/account_banish.rb
224
+ - test/dummy/app/jobs/account_downgrade.rb
225
+ - test/dummy/app/jobs/account_upgrade.rb
226
+ - test/dummy/app/jobs/mailing_list_subscription.rb
227
+ - test/dummy/app/views/layouts/application.html.erb
228
+ - test/dummy/config/application.rb
229
+ - test/dummy/config/boot.rb
230
+ - test/dummy/config/database.yml
231
+ - test/dummy/config/environment.rb
232
+ - test/dummy/config/environments/development.rb
233
+ - test/dummy/config/environments/production.rb
234
+ - test/dummy/config/environments/test.rb
235
+ - test/dummy/config/initializers/backtrace_silencers.rb
236
+ - test/dummy/config/initializers/inflections.rb
237
+ - test/dummy/config/initializers/mime_types.rb
238
+ - test/dummy/config/initializers/secret_token.rb
239
+ - test/dummy/config/initializers/session_store.rb
240
+ - test/dummy/config/initializers/wrap_parameters.rb
241
+ - test/dummy/config/locales/en.yml
242
+ - test/dummy/config/routes.rb
243
+ - test/dummy/config.ru
244
+ - test/dummy/db/migrate/20130212113009_create_delayed_jobs.rb
245
+ - test/dummy/db/migrate/20130215111404_create_level_up_jobs.level_up.rb
246
+ - test/dummy/db/schema.rb
247
+ - test/dummy/public/404.html
248
+ - test/dummy/public/422.html
249
+ - test/dummy/public/500.html
250
+ - test/dummy/public/favicon.ico
251
+ - test/dummy/Rakefile
252
+ - test/dummy/README.rdoc
253
+ - test/dummy/script/delayed_job
254
+ - test/dummy/script/rails
255
+ - test/fixtures/level_up/jobs.yml
256
+ - test/functional/level_up/home_controller_test.rb
257
+ - test/functional/level_up/jobs_controller_test.rb
258
+ - test/integration/navigation_test.rb
259
+ - test/level_up_test.rb
260
+ - test/test_helper.rb
261
+ - test/unit/helpers/level_up/home_helper_test.rb
262
+ - test/unit/helpers/level_up/jobs_helper_test.rb
263
+ - test/unit/level_up/job_test.rb
264
+ homepage: https://github.com/kmatrah/level_up
265
+ licenses: []
266
+ post_install_message:
267
+ rdoc_options: []
268
+ require_paths:
269
+ - lib
270
+ required_ruby_version: !ruby/object:Gem::Requirement
271
+ none: false
272
+ requirements:
273
+ - - ! '>='
274
+ - !ruby/object:Gem::Version
275
+ version: '0'
276
+ required_rubygems_version: !ruby/object:Gem::Requirement
277
+ none: false
278
+ requirements:
279
+ - - ! '>='
280
+ - !ruby/object:Gem::Version
281
+ version: '0'
282
+ requirements: []
283
+ rubyforge_project:
284
+ rubygems_version: 1.8.24
285
+ signing_key:
286
+ specification_version: 3
287
+ summary: A rails engine to structure, run and manage asynchronous jobs
288
+ test_files:
289
+ - test/dummy/app/assets/javascripts/application.js
290
+ - test/dummy/app/assets/stylesheets/application.css
291
+ - test/dummy/app/controllers/application_controller.rb
292
+ - test/dummy/app/helpers/application_helper.rb
293
+ - test/dummy/app/jobs/account_banish.rb
294
+ - test/dummy/app/jobs/account_downgrade.rb
295
+ - test/dummy/app/jobs/account_upgrade.rb
296
+ - test/dummy/app/jobs/mailing_list_subscription.rb
297
+ - test/dummy/app/views/layouts/application.html.erb
298
+ - test/dummy/config/application.rb
299
+ - test/dummy/config/boot.rb
300
+ - test/dummy/config/database.yml
301
+ - test/dummy/config/environment.rb
302
+ - test/dummy/config/environments/development.rb
303
+ - test/dummy/config/environments/production.rb
304
+ - test/dummy/config/environments/test.rb
305
+ - test/dummy/config/initializers/backtrace_silencers.rb
306
+ - test/dummy/config/initializers/inflections.rb
307
+ - test/dummy/config/initializers/mime_types.rb
308
+ - test/dummy/config/initializers/secret_token.rb
309
+ - test/dummy/config/initializers/session_store.rb
310
+ - test/dummy/config/initializers/wrap_parameters.rb
311
+ - test/dummy/config/locales/en.yml
312
+ - test/dummy/config/routes.rb
313
+ - test/dummy/config.ru
314
+ - test/dummy/db/migrate/20130212113009_create_delayed_jobs.rb
315
+ - test/dummy/db/migrate/20130215111404_create_level_up_jobs.level_up.rb
316
+ - test/dummy/db/schema.rb
317
+ - test/dummy/public/404.html
318
+ - test/dummy/public/422.html
319
+ - test/dummy/public/500.html
320
+ - test/dummy/public/favicon.ico
321
+ - test/dummy/Rakefile
322
+ - test/dummy/README.rdoc
323
+ - test/dummy/script/delayed_job
324
+ - test/dummy/script/rails
325
+ - test/fixtures/level_up/jobs.yml
326
+ - test/functional/level_up/home_controller_test.rb
327
+ - test/functional/level_up/jobs_controller_test.rb
328
+ - test/integration/navigation_test.rb
329
+ - test/level_up_test.rb
330
+ - test/test_helper.rb
331
+ - test/unit/helpers/level_up/home_helper_test.rb
332
+ - test/unit/helpers/level_up/jobs_helper_test.rb
333
+ - test/unit/level_up/job_test.rb