creeper 1.0.9 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. data/.gitignore +1 -0
  2. data/.rvmrc +48 -0
  3. data/Gemfile +17 -1
  4. data/Guardfile +32 -0
  5. data/Rakefile +9 -1
  6. data/bin/creeper +10 -58
  7. data/bin/creeperctl +74 -0
  8. data/config.ru +18 -0
  9. data/creeper.gemspec +19 -9
  10. data/lib/creeper.rb +108 -413
  11. data/lib/creeper/beanstalk_connection.rb +35 -0
  12. data/lib/creeper/cli.rb +225 -0
  13. data/lib/creeper/client.rb +93 -0
  14. data/lib/creeper/core_ext.rb +54 -0
  15. data/lib/creeper/exception_handler.rb +30 -0
  16. data/lib/creeper/extensions/action_mailer.rb +33 -0
  17. data/lib/creeper/extensions/active_record.rb +30 -0
  18. data/lib/creeper/extensions/generic_proxy.rb +26 -0
  19. data/lib/creeper/fetch.rb +94 -0
  20. data/lib/creeper/legacy.rb +46 -0
  21. data/lib/creeper/logging.rb +46 -0
  22. data/lib/creeper/manager.rb +164 -0
  23. data/lib/creeper/middleware/chain.rb +100 -0
  24. data/lib/creeper/middleware/server/active_record.rb +13 -0
  25. data/lib/creeper/middleware/server/logging.rb +31 -0
  26. data/lib/creeper/middleware/server/retry_jobs.rb +79 -0
  27. data/lib/creeper/middleware/server/timeout.rb +21 -0
  28. data/lib/creeper/paginator.rb +31 -0
  29. data/lib/creeper/processor.rb +116 -0
  30. data/lib/creeper/rails.rb +21 -0
  31. data/lib/creeper/redis_connection.rb +28 -0
  32. data/lib/creeper/testing.rb +44 -0
  33. data/lib/creeper/util.rb +45 -0
  34. data/lib/creeper/version.rb +1 -1
  35. data/lib/creeper/web.rb +248 -0
  36. data/lib/creeper/worker.rb +62 -313
  37. data/spec/dummy/.gitignore +15 -0
  38. data/spec/dummy/Gemfile +51 -0
  39. data/spec/dummy/README.rdoc +261 -0
  40. data/spec/dummy/Rakefile +7 -0
  41. data/spec/dummy/app/assets/images/rails.png +0 -0
  42. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  43. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  44. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  45. data/spec/dummy/app/controllers/work_controller.rb +71 -0
  46. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  47. data/spec/dummy/app/mailers/.gitkeep +0 -0
  48. data/spec/dummy/app/mailers/user_mailer.rb +9 -0
  49. data/spec/dummy/app/models/.gitkeep +0 -0
  50. data/spec/dummy/app/models/post.rb +8 -0
  51. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  52. data/spec/dummy/app/views/user_mailer/greetings.html.erb +3 -0
  53. data/spec/dummy/app/views/work/index.html.erb +1 -0
  54. data/spec/dummy/app/workers/fast_worker.rb +10 -0
  55. data/spec/dummy/app/workers/hard_worker.rb +11 -0
  56. data/spec/dummy/app/workers/lazy_worker.rb +12 -0
  57. data/spec/dummy/app/workers/suicidal_worker.rb +33 -0
  58. data/spec/dummy/config.ru +4 -0
  59. data/spec/dummy/config/application.rb +68 -0
  60. data/spec/dummy/config/boot.rb +6 -0
  61. data/spec/dummy/config/creeper.yml +9 -0
  62. data/spec/dummy/config/database.yml +25 -0
  63. data/spec/dummy/config/environment.rb +5 -0
  64. data/spec/dummy/config/environments/development.rb +37 -0
  65. data/spec/dummy/config/environments/production.rb +67 -0
  66. data/spec/dummy/config/environments/test.rb +37 -0
  67. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  68. data/spec/dummy/config/initializers/creeper.rb +8 -0
  69. data/spec/dummy/config/initializers/inflections.rb +15 -0
  70. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  71. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  72. data/spec/dummy/config/initializers/session_store.rb +8 -0
  73. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  74. data/spec/dummy/config/locales/en.yml +5 -0
  75. data/spec/dummy/config/routes.rb +13 -0
  76. data/spec/dummy/db/migrate/20120123214055_create_posts.rb +10 -0
  77. data/spec/dummy/db/schema.rb +23 -0
  78. data/spec/dummy/db/seeds.rb +7 -0
  79. data/spec/dummy/lib/assets/.gitkeep +0 -0
  80. data/spec/dummy/lib/tasks/.gitkeep +0 -0
  81. data/spec/dummy/log/.gitkeep +0 -0
  82. data/spec/dummy/public/404.html +26 -0
  83. data/spec/dummy/public/422.html +26 -0
  84. data/spec/dummy/public/500.html +25 -0
  85. data/spec/dummy/public/favicon.ico +0 -0
  86. data/spec/dummy/public/index.html +241 -0
  87. data/spec/dummy/public/robots.txt +5 -0
  88. data/spec/dummy/script/rails +6 -0
  89. data/spec/dummy/vendor/assets/javascripts/.gitkeep +0 -0
  90. data/spec/dummy/vendor/assets/stylesheets/.gitkeep +0 -0
  91. data/spec/dummy/vendor/plugins/.gitkeep +0 -0
  92. data/spec/lib/creeper/cli_spec.rb +208 -0
  93. data/spec/lib/creeper/client_spec.rb +110 -0
  94. data/spec/lib/creeper/exception_handler_spec.rb +110 -0
  95. data/spec/lib/creeper/processor_spec.rb +92 -0
  96. data/spec/lib/creeper/testing_spec.rb +105 -0
  97. data/spec/lib/creeper_spec.rb +54 -120
  98. data/spec/spec_helper.rb +81 -7
  99. data/spec/support/config.yml +9 -0
  100. data/spec/support/fake_env.rb +0 -0
  101. data/spec/support/workers/base_worker.rb +11 -0
  102. data/spec/support/workers/my_worker.rb +4 -0
  103. data/spec/support/workers/queued_worker.rb +5 -0
  104. data/spec/support/workers/real_worker.rb +10 -0
  105. data/web/assets/images/bootstrap/glyphicons-halflings-white.png +0 -0
  106. data/web/assets/images/bootstrap/glyphicons-halflings.png +0 -0
  107. data/web/assets/javascripts/application.js +49 -0
  108. data/web/assets/javascripts/vendor/bootstrap.js +12 -0
  109. data/web/assets/javascripts/vendor/bootstrap/bootstrap-alert.js +91 -0
  110. data/web/assets/javascripts/vendor/bootstrap/bootstrap-button.js +98 -0
  111. data/web/assets/javascripts/vendor/bootstrap/bootstrap-carousel.js +154 -0
  112. data/web/assets/javascripts/vendor/bootstrap/bootstrap-collapse.js +136 -0
  113. data/web/assets/javascripts/vendor/bootstrap/bootstrap-dropdown.js +92 -0
  114. data/web/assets/javascripts/vendor/bootstrap/bootstrap-modal.js +210 -0
  115. data/web/assets/javascripts/vendor/bootstrap/bootstrap-popover.js +95 -0
  116. data/web/assets/javascripts/vendor/bootstrap/bootstrap-scrollspy.js +125 -0
  117. data/web/assets/javascripts/vendor/bootstrap/bootstrap-tab.js +130 -0
  118. data/web/assets/javascripts/vendor/bootstrap/bootstrap-tooltip.js +270 -0
  119. data/web/assets/javascripts/vendor/bootstrap/bootstrap-transition.js +51 -0
  120. data/web/assets/javascripts/vendor/bootstrap/bootstrap-typeahead.js +271 -0
  121. data/web/assets/javascripts/vendor/jquery.js +9266 -0
  122. data/web/assets/javascripts/vendor/jquery.timeago.js +148 -0
  123. data/web/assets/stylesheets/application.css +6 -0
  124. data/web/assets/stylesheets/layout.css +26 -0
  125. data/web/assets/stylesheets/vendor/bootstrap-responsive.css +567 -0
  126. data/web/assets/stylesheets/vendor/bootstrap.css +3365 -0
  127. data/web/views/_paging.slim +15 -0
  128. data/web/views/_summary.slim +9 -0
  129. data/web/views/_workers.slim +14 -0
  130. data/web/views/index.slim +10 -0
  131. data/web/views/layout.slim +37 -0
  132. data/web/views/poll.slim +3 -0
  133. data/web/views/queue.slim +15 -0
  134. data/web/views/queues.slim +19 -0
  135. data/web/views/retries.slim +31 -0
  136. data/web/views/retry.slim +52 -0
  137. data/web/views/scheduled.slim +27 -0
  138. metadata +341 -23
  139. data/lib/creeper/celluloid_ext.rb +0 -42
  140. data/lib/creeper/creep.rb +0 -25
  141. data/lib/creeper/err_logger.rb +0 -37
  142. data/lib/creeper/launcher.rb +0 -44
  143. data/lib/creeper/out_logger.rb +0 -39
  144. data/spec/lib/creeper/session_spec.rb +0 -15
  145. data/spec/lib/creeper/worker_spec.rb +0 -21
@@ -0,0 +1,15 @@
1
+ - if @total_size > @count
2
+ .pagination.pagination-right
3
+ ul
4
+ li class="#{'disabled' if @current_page == 1}"
5
+ a href="#{url}?page=1" «
6
+ - if @current_page > 1
7
+ li
8
+ a href="#{url}?page=#{@current_page - 1}" #{@current_page - 1}
9
+ li.disabled
10
+ a href="#{url}?page=#{@current_page}" #{@current_page}
11
+ - if @total_size > @current_page * @count
12
+ li
13
+ a href="#{url}?page=#{@current_page + 1}" #{@current_page + 1}
14
+ li class="#{'disabled' if @total_size <= @current_page * @count}"
15
+ a href="#{url}?page=#{(@total_size / @count).ceil + 1}" »
@@ -0,0 +1,9 @@
1
+ .hero-unit
2
+ h1 Creeper is #{current_status}
3
+ p Processed: #{processed}
4
+ p Failed: #{failed}
5
+ p Buried: #{buried}
6
+ p Busy Workers: #{workers.size}
7
+ p Scheduled: #{scheduled}
8
+ p Retries Pending: #{zcard('retry')}
9
+ p Queue Backlog: #{backlog}
@@ -0,0 +1,14 @@
1
+ table class="table table-striped table-bordered workers"
2
+ tr
3
+ th Worker
4
+ th Queue
5
+ th Class
6
+ th Arguments
7
+ th Started
8
+ - workers.each do |(worker, msg)|
9
+ tr
10
+ td= worker
11
+ td= msg['queue']
12
+ td= msg['payload']['class']
13
+ td= msg['payload']['args'].inspect[0..100]
14
+ td== relative_time(Time.parse(msg['run_at']))
@@ -0,0 +1,10 @@
1
+ == slim :_summary
2
+
3
+ .poll
4
+ a*{name: 'poll'} href='#{{root_path}}poll' Live Poll
5
+ span class="poll-status"
6
+
7
+ == slim :_workers
8
+
9
+ form action="#{root_path}reset" method="post"
10
+ button.btn type="submit" title="If you kill -9 Creeper, this table can fill up with old data." Clear worker list
@@ -0,0 +1,37 @@
1
+ doctype html
2
+ html
3
+ head
4
+ link href='#{{root_path}}assets/application.css' media='screen' rel='stylesheet' type='text/css'
5
+ title Creeper
6
+ body
7
+ .navbar.navbar-fixed-top
8
+ .navbar-inner
9
+ .container
10
+ a.btn.btn-navbar data-toggle="collapse" data-target=".nav-collapse"
11
+ span.icon-bar
12
+ span.icon-bar
13
+ span.icon-bar
14
+ a.brand href='#{{root_path}}'
15
+ | Creeper
16
+ div.nav-collapse
17
+ ul.nav
18
+ li
19
+ a href='#{{root_path}}' Home
20
+ li
21
+ a href='#{{root_path}}queues' Queues
22
+ li
23
+ a href='#{{root_path}}retries' Retries
24
+ li
25
+ a href='#{{root_path}}scheduled' Scheduled
26
+ ul.nav.pull-right
27
+ li
28
+ a Beanstalk: #{beanstalk_location}
29
+ li
30
+ a Redis: #{location}
31
+ li
32
+ a #{Time.now.utc}
33
+
34
+ .container
35
+ == yield
36
+
37
+ script type="text/javascript" src="#{{root_path}}assets/application.js"
@@ -0,0 +1,3 @@
1
+ div
2
+ == slim :_summary
3
+ == slim :_workers
@@ -0,0 +1,15 @@
1
+ header
2
+ h1 Current messages in #{@name}
3
+
4
+ == slim :_paging, :locals => { :url => "#{root_path}queues/#{@name}" }
5
+
6
+ table class="table table-striped table-bordered"
7
+ tr
8
+ th Class
9
+ th Arguments
10
+ - @messages.each do |msg|
11
+ tr
12
+ td= msg['class']
13
+ td= msg['args'].inspect[0..100]
14
+
15
+ == slim :_paging, :locals => { :url => "#{root_path}queues/#{@name}" }
@@ -0,0 +1,19 @@
1
+ h1 Queues
2
+
3
+ - if @queues.size > 0
4
+ table class="table table-striped table-bordered"
5
+ tr
6
+ th Queue
7
+ th Size
8
+ th
9
+ - queues.each do |(queue, size)|
10
+ tr
11
+ td
12
+ a href="#{root_path}queues/#{queue}" #{queue}
13
+ td= size
14
+ td
15
+ form action="#{root_path}queues/#{queue}" method="post"
16
+ input.btn.btn-danger type="submit" name="delete" value="Delete"
17
+ - else
18
+ p No queues found.
19
+ a href="#{root_path}" Back
@@ -0,0 +1,31 @@
1
+ h1 Retries
2
+
3
+ - if @retries.size > 0
4
+ == slim :_paging, :locals => { :url => "#{root_path}retries" }
5
+
6
+ form action="#{root_path}retries" method="post"
7
+ table class="table table-striped table-bordered"
8
+ tr
9
+ th
10
+ input type="checkbox" class="check_all"
11
+ th Next Retry
12
+ th Retry Count
13
+ th Queue
14
+ th Worker
15
+ th Args
16
+ - @retries.each do |(msg, score)|
17
+ tr
18
+ td
19
+ input type='checkbox' name='score[]' value='#{score}'
20
+ td
21
+ a href="#{root_path}retries/#{score}"== relative_time(Time.at(score))
22
+ td= msg['retry_count']
23
+ td
24
+ a href="#{root_path}queues/#{msg['queue']}" #{msg['queue']}
25
+ td= msg['class']
26
+ td= display_args(msg['args'])
27
+ input.btn.btn-primary type="submit" name="retry" value="Retry Now"
28
+ input.btn.btn-danger type="submit" name="delete" value="Delete"
29
+ - else
30
+ p No retries found.
31
+ a href="#{root_path}" Back
@@ -0,0 +1,52 @@
1
+ header
2
+ h1 Job
3
+
4
+ - @retries.each do |msg|
5
+ table class="table table-striped table-bordered"
6
+ tbody
7
+ tr
8
+ th Queue
9
+ td
10
+ a href="#{root_path}queues/#{msg['queue']}" #{msg['queue']}
11
+ tr
12
+ th Job Class
13
+ td
14
+ code= msg['class']
15
+ tr
16
+ th Job Arguments
17
+ td
18
+ code= display_args(msg['args'], 1000)
19
+ - if msg['retry_count'] > 0
20
+ tr
21
+ th Retry Count
22
+ td= msg['retry_count']
23
+ tr
24
+ th Last Retry
25
+ td== relative_time(Time.parse(msg['retried_at']))
26
+ - else
27
+ tr
28
+ th Originally Failed
29
+ td== relative_time(Time.parse(msg['failed_at']))
30
+ tr
31
+ th Next Retry
32
+ td== relative_time(Time.at(@score))
33
+
34
+ h1 Error
35
+ table class="table table-striped table-bordered"
36
+ tbody
37
+ tr
38
+ th Error Class
39
+ td
40
+ code= msg['error_class']
41
+ tr
42
+ th Error Message
43
+ td= msg['error_message']
44
+ - if !msg['error_backtrace'].nil?
45
+ tr
46
+ th Error Backtrace
47
+ td
48
+ code== msg['error_backtrace'].join("<br/>")
49
+ form.form-horizontal action="#{root_path}retries/#{@score}" method="post"
50
+ a.btn href="#{root_path}retries" &larr; Back
51
+ input.btn.btn-primary type="submit" name="retry" value="Retry Now"
52
+ input.btn.btn-danger type="submit" name="delete" value="Delete"
@@ -0,0 +1,27 @@
1
+ h1 Scheduled Jobs
2
+
3
+ - if @scheduled.size > 0
4
+ == slim :_paging, :locals => { :url => "#{root_path}scheduled" }
5
+
6
+ form action="#{root_path}scheduled" method="post"
7
+ table class="table table-striped table-bordered"
8
+ tr
9
+ th
10
+ input type="checkbox" class="check_all"
11
+ th When
12
+ th Queue
13
+ th Worker
14
+ th Args
15
+ - @scheduled.each do |(msg, score)|
16
+ tr
17
+ td
18
+ input type='checkbox' name='score[]' value='#{score}'
19
+ td== relative_time(Time.at(score))
20
+ td
21
+ a href="#{root_path}queues/#{msg['queue']}" #{msg['queue']}
22
+ td= msg['class']
23
+ td= display_args(msg['args'])
24
+ input.btn.btn-danger type="submit" name="delete" value="Delete"
25
+ - else
26
+ p No scheduled jobs found.
27
+ a href="#{root_path}" Back
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: creeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,17 +10,33 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-29 00:00:00.000000000 Z
13
+ date: 2012-08-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: pry
16
+ name: redis
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '3'
31
+ - !ruby/object:Gem::Dependency
32
+ name: redis-namespace
17
33
  requirement: !ruby/object:Gem::Requirement
18
34
  none: false
19
35
  requirements:
20
36
  - - ! '>='
21
37
  - !ruby/object:Gem::Version
22
38
  version: '0'
23
- type: :development
39
+ type: :runtime
24
40
  prerelease: false
25
41
  version_requirements: !ruby/object:Gem::Requirement
26
42
  none: false
@@ -29,7 +45,87 @@ dependencies:
29
45
  - !ruby/object:Gem::Version
30
46
  version: '0'
31
47
  - !ruby/object:Gem::Dependency
32
- name: rake
48
+ name: beanstalk-client
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: connection_pool
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: 0.9.2
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 0.9.2
79
+ - !ruby/object:Gem::Dependency
80
+ name: celluloid
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ version: 0.11.1
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: 0.11.1
95
+ - !ruby/object:Gem::Dependency
96
+ name: kgio
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: multi_json
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: '1'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: '1'
127
+ - !ruby/object:Gem::Dependency
128
+ name: pry
33
129
  requirement: !ruby/object:Gem::Requirement
34
130
  none: false
35
131
  requirements:
@@ -45,7 +141,7 @@ dependencies:
45
141
  - !ruby/object:Gem::Version
46
142
  version: '0'
47
143
  - !ruby/object:Gem::Dependency
48
- name: rspec
144
+ name: rake
49
145
  requirement: !ruby/object:Gem::Requirement
50
146
  none: false
51
147
  requirements:
@@ -61,14 +157,14 @@ dependencies:
61
157
  - !ruby/object:Gem::Version
62
158
  version: '0'
63
159
  - !ruby/object:Gem::Dependency
64
- name: beanstalk-client
160
+ name: rspec
65
161
  requirement: !ruby/object:Gem::Requirement
66
162
  none: false
67
163
  requirements:
68
164
  - - ! '>='
69
165
  - !ruby/object:Gem::Version
70
166
  version: '0'
71
- type: :runtime
167
+ type: :development
72
168
  prerelease: false
73
169
  version_requirements: !ruby/object:Gem::Requirement
74
170
  none: false
@@ -77,14 +173,14 @@ dependencies:
77
173
  - !ruby/object:Gem::Version
78
174
  version: '0'
79
175
  - !ruby/object:Gem::Dependency
80
- name: celluloid
176
+ name: sinatra
81
177
  requirement: !ruby/object:Gem::Requirement
82
178
  none: false
83
179
  requirements:
84
180
  - - ! '>='
85
181
  - !ruby/object:Gem::Version
86
182
  version: '0'
87
- type: :runtime
183
+ type: :development
88
184
  prerelease: false
89
185
  version_requirements: !ruby/object:Gem::Requirement
90
186
  none: false
@@ -93,14 +189,14 @@ dependencies:
93
189
  - !ruby/object:Gem::Version
94
190
  version: '0'
95
191
  - !ruby/object:Gem::Dependency
96
- name: kgio
192
+ name: slim
97
193
  requirement: !ruby/object:Gem::Requirement
98
194
  none: false
99
195
  requirements:
100
196
  - - ! '>='
101
197
  - !ruby/object:Gem::Version
102
198
  version: '0'
103
- type: :runtime
199
+ type: :development
104
200
  prerelease: false
105
201
  version_requirements: !ruby/object:Gem::Requirement
106
202
  none: false
@@ -108,36 +204,189 @@ dependencies:
108
204
  - - ! '>='
109
205
  - !ruby/object:Gem::Version
110
206
  version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: actionmailer
209
+ requirement: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ~>
213
+ - !ruby/object:Gem::Version
214
+ version: '3'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ~>
221
+ - !ruby/object:Gem::Version
222
+ version: '3'
223
+ - !ruby/object:Gem::Dependency
224
+ name: activerecord
225
+ requirement: !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - ~>
229
+ - !ruby/object:Gem::Version
230
+ version: '3'
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - ~>
237
+ - !ruby/object:Gem::Version
238
+ version: '3'
111
239
  description: Creeper is an evented version of Stalker
112
240
  email:
113
241
  - lyondhill@gmail.com
114
242
  - potatosaladx@gmail.com
115
243
  executables:
116
244
  - creeper
245
+ - creeperctl
117
246
  extensions: []
118
247
  extra_rdoc_files: []
119
248
  files:
120
249
  - .gitignore
121
250
  - .rspec
251
+ - .rvmrc
122
252
  - Gemfile
253
+ - Guardfile
123
254
  - LICENSE
124
255
  - README.md
125
256
  - Rakefile
126
257
  - bin/creeper
258
+ - bin/creeperctl
259
+ - config.ru
127
260
  - creeper.gemspec
128
261
  - examples/jack.rb
129
262
  - lib/creeper.rb
130
- - lib/creeper/celluloid_ext.rb
131
- - lib/creeper/creep.rb
132
- - lib/creeper/err_logger.rb
133
- - lib/creeper/launcher.rb
134
- - lib/creeper/out_logger.rb
263
+ - lib/creeper/beanstalk_connection.rb
264
+ - lib/creeper/cli.rb
265
+ - lib/creeper/client.rb
266
+ - lib/creeper/core_ext.rb
267
+ - lib/creeper/exception_handler.rb
268
+ - lib/creeper/extensions/action_mailer.rb
269
+ - lib/creeper/extensions/active_record.rb
270
+ - lib/creeper/extensions/generic_proxy.rb
271
+ - lib/creeper/fetch.rb
272
+ - lib/creeper/legacy.rb
273
+ - lib/creeper/logging.rb
274
+ - lib/creeper/manager.rb
275
+ - lib/creeper/middleware/chain.rb
276
+ - lib/creeper/middleware/server/active_record.rb
277
+ - lib/creeper/middleware/server/logging.rb
278
+ - lib/creeper/middleware/server/retry_jobs.rb
279
+ - lib/creeper/middleware/server/timeout.rb
280
+ - lib/creeper/paginator.rb
281
+ - lib/creeper/processor.rb
282
+ - lib/creeper/rails.rb
283
+ - lib/creeper/redis_connection.rb
284
+ - lib/creeper/testing.rb
285
+ - lib/creeper/util.rb
135
286
  - lib/creeper/version.rb
287
+ - lib/creeper/web.rb
136
288
  - lib/creeper/worker.rb
137
- - spec/lib/creeper/session_spec.rb
138
- - spec/lib/creeper/worker_spec.rb
289
+ - spec/dummy/.gitignore
290
+ - spec/dummy/Gemfile
291
+ - spec/dummy/README.rdoc
292
+ - spec/dummy/Rakefile
293
+ - spec/dummy/app/assets/images/rails.png
294
+ - spec/dummy/app/assets/javascripts/application.js
295
+ - spec/dummy/app/assets/stylesheets/application.css
296
+ - spec/dummy/app/controllers/application_controller.rb
297
+ - spec/dummy/app/controllers/work_controller.rb
298
+ - spec/dummy/app/helpers/application_helper.rb
299
+ - spec/dummy/app/mailers/.gitkeep
300
+ - spec/dummy/app/mailers/user_mailer.rb
301
+ - spec/dummy/app/models/.gitkeep
302
+ - spec/dummy/app/models/post.rb
303
+ - spec/dummy/app/views/layouts/application.html.erb
304
+ - spec/dummy/app/views/user_mailer/greetings.html.erb
305
+ - spec/dummy/app/views/work/index.html.erb
306
+ - spec/dummy/app/workers/fast_worker.rb
307
+ - spec/dummy/app/workers/hard_worker.rb
308
+ - spec/dummy/app/workers/lazy_worker.rb
309
+ - spec/dummy/app/workers/suicidal_worker.rb
310
+ - spec/dummy/config.ru
311
+ - spec/dummy/config/application.rb
312
+ - spec/dummy/config/boot.rb
313
+ - spec/dummy/config/creeper.yml
314
+ - spec/dummy/config/database.yml
315
+ - spec/dummy/config/environment.rb
316
+ - spec/dummy/config/environments/development.rb
317
+ - spec/dummy/config/environments/production.rb
318
+ - spec/dummy/config/environments/test.rb
319
+ - spec/dummy/config/initializers/backtrace_silencers.rb
320
+ - spec/dummy/config/initializers/creeper.rb
321
+ - spec/dummy/config/initializers/inflections.rb
322
+ - spec/dummy/config/initializers/mime_types.rb
323
+ - spec/dummy/config/initializers/secret_token.rb
324
+ - spec/dummy/config/initializers/session_store.rb
325
+ - spec/dummy/config/initializers/wrap_parameters.rb
326
+ - spec/dummy/config/locales/en.yml
327
+ - spec/dummy/config/routes.rb
328
+ - spec/dummy/db/migrate/20120123214055_create_posts.rb
329
+ - spec/dummy/db/schema.rb
330
+ - spec/dummy/db/seeds.rb
331
+ - spec/dummy/lib/assets/.gitkeep
332
+ - spec/dummy/lib/tasks/.gitkeep
333
+ - spec/dummy/log/.gitkeep
334
+ - spec/dummy/public/404.html
335
+ - spec/dummy/public/422.html
336
+ - spec/dummy/public/500.html
337
+ - spec/dummy/public/favicon.ico
338
+ - spec/dummy/public/index.html
339
+ - spec/dummy/public/robots.txt
340
+ - spec/dummy/script/rails
341
+ - spec/dummy/vendor/assets/javascripts/.gitkeep
342
+ - spec/dummy/vendor/assets/stylesheets/.gitkeep
343
+ - spec/dummy/vendor/plugins/.gitkeep
344
+ - spec/lib/creeper/cli_spec.rb
345
+ - spec/lib/creeper/client_spec.rb
346
+ - spec/lib/creeper/exception_handler_spec.rb
347
+ - spec/lib/creeper/processor_spec.rb
348
+ - spec/lib/creeper/testing_spec.rb
139
349
  - spec/lib/creeper_spec.rb
140
350
  - spec/spec_helper.rb
351
+ - spec/support/config.yml
352
+ - spec/support/fake_env.rb
353
+ - spec/support/workers/base_worker.rb
354
+ - spec/support/workers/my_worker.rb
355
+ - spec/support/workers/queued_worker.rb
356
+ - spec/support/workers/real_worker.rb
357
+ - web/assets/images/bootstrap/glyphicons-halflings-white.png
358
+ - web/assets/images/bootstrap/glyphicons-halflings.png
359
+ - web/assets/javascripts/application.js
360
+ - web/assets/javascripts/vendor/bootstrap.js
361
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-alert.js
362
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-button.js
363
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-carousel.js
364
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-collapse.js
365
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-dropdown.js
366
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-modal.js
367
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-popover.js
368
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-scrollspy.js
369
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-tab.js
370
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-tooltip.js
371
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-transition.js
372
+ - web/assets/javascripts/vendor/bootstrap/bootstrap-typeahead.js
373
+ - web/assets/javascripts/vendor/jquery.js
374
+ - web/assets/javascripts/vendor/jquery.timeago.js
375
+ - web/assets/stylesheets/application.css
376
+ - web/assets/stylesheets/layout.css
377
+ - web/assets/stylesheets/vendor/bootstrap-responsive.css
378
+ - web/assets/stylesheets/vendor/bootstrap.css
379
+ - web/views/_paging.slim
380
+ - web/views/_summary.slim
381
+ - web/views/_workers.slim
382
+ - web/views/index.slim
383
+ - web/views/layout.slim
384
+ - web/views/poll.slim
385
+ - web/views/queue.slim
386
+ - web/views/queues.slim
387
+ - web/views/retries.slim
388
+ - web/views/retry.slim
389
+ - web/views/scheduled.slim
141
390
  homepage: https://github.com/potatosalad/creeper
142
391
  licenses: []
143
392
  post_install_message:
@@ -150,22 +399,91 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
399
  - - ! '>='
151
400
  - !ruby/object:Gem::Version
152
401
  version: '0'
402
+ segments:
403
+ - 0
404
+ hash: -3899601002688585292
153
405
  required_rubygems_version: !ruby/object:Gem::Requirement
154
406
  none: false
155
407
  requirements:
156
408
  - - ! '>='
157
409
  - !ruby/object:Gem::Version
158
410
  version: '0'
411
+ segments:
412
+ - 0
413
+ hash: -3899601002688585292
159
414
  requirements: []
160
415
  rubyforge_project:
161
- rubygems_version: 1.8.23
416
+ rubygems_version: 1.8.24
162
417
  signing_key:
163
418
  specification_version: 3
164
419
  summary: A better solution for io bound jobs, same as stalker in functionality but
165
420
  more evented
166
421
  test_files:
167
- - spec/lib/creeper/session_spec.rb
168
- - spec/lib/creeper/worker_spec.rb
422
+ - spec/dummy/.gitignore
423
+ - spec/dummy/Gemfile
424
+ - spec/dummy/README.rdoc
425
+ - spec/dummy/Rakefile
426
+ - spec/dummy/app/assets/images/rails.png
427
+ - spec/dummy/app/assets/javascripts/application.js
428
+ - spec/dummy/app/assets/stylesheets/application.css
429
+ - spec/dummy/app/controllers/application_controller.rb
430
+ - spec/dummy/app/controllers/work_controller.rb
431
+ - spec/dummy/app/helpers/application_helper.rb
432
+ - spec/dummy/app/mailers/.gitkeep
433
+ - spec/dummy/app/mailers/user_mailer.rb
434
+ - spec/dummy/app/models/.gitkeep
435
+ - spec/dummy/app/models/post.rb
436
+ - spec/dummy/app/views/layouts/application.html.erb
437
+ - spec/dummy/app/views/user_mailer/greetings.html.erb
438
+ - spec/dummy/app/views/work/index.html.erb
439
+ - spec/dummy/app/workers/fast_worker.rb
440
+ - spec/dummy/app/workers/hard_worker.rb
441
+ - spec/dummy/app/workers/lazy_worker.rb
442
+ - spec/dummy/app/workers/suicidal_worker.rb
443
+ - spec/dummy/config.ru
444
+ - spec/dummy/config/application.rb
445
+ - spec/dummy/config/boot.rb
446
+ - spec/dummy/config/creeper.yml
447
+ - spec/dummy/config/database.yml
448
+ - spec/dummy/config/environment.rb
449
+ - spec/dummy/config/environments/development.rb
450
+ - spec/dummy/config/environments/production.rb
451
+ - spec/dummy/config/environments/test.rb
452
+ - spec/dummy/config/initializers/backtrace_silencers.rb
453
+ - spec/dummy/config/initializers/creeper.rb
454
+ - spec/dummy/config/initializers/inflections.rb
455
+ - spec/dummy/config/initializers/mime_types.rb
456
+ - spec/dummy/config/initializers/secret_token.rb
457
+ - spec/dummy/config/initializers/session_store.rb
458
+ - spec/dummy/config/initializers/wrap_parameters.rb
459
+ - spec/dummy/config/locales/en.yml
460
+ - spec/dummy/config/routes.rb
461
+ - spec/dummy/db/migrate/20120123214055_create_posts.rb
462
+ - spec/dummy/db/schema.rb
463
+ - spec/dummy/db/seeds.rb
464
+ - spec/dummy/lib/assets/.gitkeep
465
+ - spec/dummy/lib/tasks/.gitkeep
466
+ - spec/dummy/log/.gitkeep
467
+ - spec/dummy/public/404.html
468
+ - spec/dummy/public/422.html
469
+ - spec/dummy/public/500.html
470
+ - spec/dummy/public/favicon.ico
471
+ - spec/dummy/public/index.html
472
+ - spec/dummy/public/robots.txt
473
+ - spec/dummy/script/rails
474
+ - spec/dummy/vendor/assets/javascripts/.gitkeep
475
+ - spec/dummy/vendor/assets/stylesheets/.gitkeep
476
+ - spec/dummy/vendor/plugins/.gitkeep
477
+ - spec/lib/creeper/cli_spec.rb
478
+ - spec/lib/creeper/client_spec.rb
479
+ - spec/lib/creeper/exception_handler_spec.rb
480
+ - spec/lib/creeper/processor_spec.rb
481
+ - spec/lib/creeper/testing_spec.rb
169
482
  - spec/lib/creeper_spec.rb
170
483
  - spec/spec_helper.rb
171
- has_rdoc:
484
+ - spec/support/config.yml
485
+ - spec/support/fake_env.rb
486
+ - spec/support/workers/base_worker.rb
487
+ - spec/support/workers/my_worker.rb
488
+ - spec/support/workers/queued_worker.rb
489
+ - spec/support/workers/real_worker.rb