resque_signal_from_child 1.25.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +15 -0
  2. data/HISTORY.md +455 -0
  3. data/LICENSE +20 -0
  4. data/README.markdown +866 -0
  5. data/Rakefile +70 -0
  6. data/bin/resque +81 -0
  7. data/bin/resque-web +27 -0
  8. data/lib/resque.rb +487 -0
  9. data/lib/resque/errors.rb +13 -0
  10. data/lib/resque/failure.rb +113 -0
  11. data/lib/resque/failure/airbrake.rb +33 -0
  12. data/lib/resque/failure/base.rb +73 -0
  13. data/lib/resque/failure/multiple.rb +59 -0
  14. data/lib/resque/failure/redis.rb +108 -0
  15. data/lib/resque/failure/redis_multi_queue.rb +89 -0
  16. data/lib/resque/helpers.rb +101 -0
  17. data/lib/resque/job.rb +346 -0
  18. data/lib/resque/log_formatters/quiet_formatter.rb +7 -0
  19. data/lib/resque/log_formatters/verbose_formatter.rb +7 -0
  20. data/lib/resque/log_formatters/very_verbose_formatter.rb +8 -0
  21. data/lib/resque/logging.rb +18 -0
  22. data/lib/resque/plugin.rb +66 -0
  23. data/lib/resque/server.rb +271 -0
  24. data/lib/resque/server/helpers.rb +52 -0
  25. data/lib/resque/server/public/favicon.ico +0 -0
  26. data/lib/resque/server/public/idle.png +0 -0
  27. data/lib/resque/server/public/jquery-1.3.2.min.js +19 -0
  28. data/lib/resque/server/public/jquery.relatize_date.js +95 -0
  29. data/lib/resque/server/public/poll.png +0 -0
  30. data/lib/resque/server/public/ranger.js +78 -0
  31. data/lib/resque/server/public/reset.css +44 -0
  32. data/lib/resque/server/public/style.css +91 -0
  33. data/lib/resque/server/public/working.png +0 -0
  34. data/lib/resque/server/test_helper.rb +19 -0
  35. data/lib/resque/server/views/error.erb +1 -0
  36. data/lib/resque/server/views/failed.erb +29 -0
  37. data/lib/resque/server/views/failed_job.erb +50 -0
  38. data/lib/resque/server/views/failed_queues_overview.erb +24 -0
  39. data/lib/resque/server/views/key_sets.erb +19 -0
  40. data/lib/resque/server/views/key_string.erb +11 -0
  41. data/lib/resque/server/views/layout.erb +44 -0
  42. data/lib/resque/server/views/next_more.erb +22 -0
  43. data/lib/resque/server/views/overview.erb +4 -0
  44. data/lib/resque/server/views/queues.erb +58 -0
  45. data/lib/resque/server/views/stats.erb +62 -0
  46. data/lib/resque/server/views/workers.erb +109 -0
  47. data/lib/resque/server/views/working.erb +72 -0
  48. data/lib/resque/stat.rb +57 -0
  49. data/lib/resque/tasks.rb +83 -0
  50. data/lib/resque/vendor/utf8_util.rb +26 -0
  51. data/lib/resque/vendor/utf8_util/utf8_util_18.rb +91 -0
  52. data/lib/resque/vendor/utf8_util/utf8_util_19.rb +5 -0
  53. data/lib/resque/version.rb +3 -0
  54. data/lib/resque/worker.rb +772 -0
  55. data/lib/tasks/redis.rake +161 -0
  56. data/lib/tasks/resque.rake +2 -0
  57. data/test/airbrake_test.rb +27 -0
  58. data/test/dump.rdb +0 -0
  59. data/test/failure_base_test.rb +15 -0
  60. data/test/job_hooks_test.rb +464 -0
  61. data/test/job_plugins_test.rb +230 -0
  62. data/test/logging_test.rb +24 -0
  63. data/test/plugin_test.rb +116 -0
  64. data/test/redis-test-cluster.conf +115 -0
  65. data/test/redis-test.conf +115 -0
  66. data/test/resque-web_test.rb +59 -0
  67. data/test/resque_failure_redis_test.rb +19 -0
  68. data/test/resque_hook_test.rb +190 -0
  69. data/test/resque_test.rb +278 -0
  70. data/test/test_helper.rb +198 -0
  71. data/test/worker_test.rb +1015 -0
  72. metadata +196 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OTI2YzMzNWU5YTU2YmFmZDk1MTZiNWYxNTNlNzQwNjI0NGE5NTU2MQ==
5
+ data.tar.gz: !binary |-
6
+ NDJjYTNlMDMwYmY3MDgzNDQzNmU5NTJkOGNkMWU3Y2RkZjM4MWM5Mw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NmM5MmZiZjQwYzcyNDg2MDdhYTBlZTZiNmQ3ZWI2ODhkMzVkMTM1MTU0ZGJi
10
+ ZDRlNDJiZDdlMGVmOGQzOTUyODdhNDkxZjUxYTMxZDNkYzI2MGQyZTA3YzMy
11
+ ZGM3ZDYwNzhiZWMwOWVkMTVkMjgwYzExZjQwNWUwZTM1ZWFkYmM=
12
+ data.tar.gz: !binary |-
13
+ OWUxMTMzZGU4NjcyN2ZkNzc4NjkwM2M4NmVkYWJiOWMwMTc2NDc3YmIxYTli
14
+ ZWUyYzU2YWEzNTA5ZTg0ZDg5NGEwM2RiNDYxYjBiNDVlZGQwYzgyYWRjMmVm
15
+ MTI1ZDU0YTVkZTMxM2RkZWNmZGNhNjI5M2VlMDJiMjU1N2Y5OGI=
data/HISTORY.md ADDED
@@ -0,0 +1,455 @@
1
+ ## 1.25.1 (2013-9-26)
2
+
3
+ * Actually require Forwardable from the standard library.
4
+
5
+ ## 1.25.0 (TBD)
6
+ * Updates fork method so [resque-multi-job-forks](https://github.com/stulentsev/resque-multi-job-forks)
7
+ monkey patching works again. See discussion at https://github.com/defunkt/resque/pull/895 for more
8
+ context (@jonhyman)
9
+ * Use Redis.pipelined to group batches of redis commands.
10
+ https://github.com/resque/resque/pull/902 (@jonhyman)
11
+ * Fixed uninitialize constant for the module/class that contains the perform
12
+ method causing job failures to no be reported, #792 (@sideshowcoder)
13
+ * Fix Resque::Failure::Base.all to have the correct signature.
14
+ (@rentalutions)
15
+ * Don't close stdio pipes when daemonizing so as to not hide errors. #967
16
+ (@sideshowcoder)
17
+ * Fix for worker_pids on Windows. #980 (@kzgs)
18
+ * Only prune workers for queues the current worker knows about. #1000
19
+ (!) (@dsabanin)
20
+ * Handle duplicate TERM signals. #988 (@softwaregravy)
21
+ * Fix issue with exiting workers and unintentionally deregistering the
22
+ parent when the forked child exits. #1017 (@magec)
23
+ * Fix encoding errors with local date formatting. #1065 (@katafrakt)
24
+ * Fix CI for 1.8.7 and 1.9.2 modes due to dependencies. #1090
25
+ (@adelcambre)
26
+ * Allow using globs for queue names to listen on, allowing things like
27
+ listening on `staging_*`. #1085 (@adelcambre)
28
+
29
+
30
+ ## 1.24.1 (2013-3-23)
31
+
32
+ * Adds a default value for `per_page` on resque-server for plugins which add tabs (@jonhyman)
33
+ * Fix bad logic on the failed queue adapter
34
+ * Added missing `require 'time'` which was causing occasional errors which
35
+ would crash workers.
36
+
37
+ ## 1.24.0 (2013-3-21)
38
+
39
+ * Web UI: Fix regression that caused the failure tab to break when using
40
+ certain failure backends (@kjg)
41
+ * Web UI: Add page list to queues (@ql)
42
+ * Web UI: Fix regression that caused the failure tab to break when clicking on
43
+ "clear all failures" under certain failure backends, #859 (@jonhyman)
44
+ * Fix regression for Resque hooks where Resque would error out if you assigned
45
+ multiple hooks using an array, #859 (@jonhyman)
46
+ * Adds ENV["RUN_AT_EXIT_HOOKS"] which when set to 1 causes any defined
47
+ `at_exit` hooks to be run on the child when the forked process exits, #862
48
+ (@jonhyman)
49
+ * Bump up redis-namespace to 1.2.
50
+ * Remove multi_json, the JSON gem does the right thing everywhere now.
51
+ * Documentation fixes with demo instructions.
52
+ * Fixed encoding for worker PIDs on Windows (@kzgs)
53
+ * Cache value of PID in an ivar. This way, if you try to look up worker PIDs
54
+ from some other process (such as the console), they will be correct.
55
+ * Add a mutex-free logger. Ruby 2.0 does not allow you to use a mutex from
56
+ a signal handler, which can potentially cause deadlock. Now we're using
57
+ `mono_logger`, which has no locks.
58
+
59
+ ## 1.23.1 (2013-3-7)
60
+
61
+ * JRuby and Rubinius are 'allow failure' on CI. This is largely due to Travis
62
+ weridness and flaky tests.
63
+ * Fix link from "queues" view to "failed" view when there's only one failed
64
+ queue (trliner)
65
+ * Making all the failure backends have the same method signature for duck
66
+ typing purposes (jonhyman)
67
+ * Fix log formatters not appending a new line (flavorpill)
68
+ * redirect unauthorized resque-web polling requests to root url (trliner)
69
+ * Various resque-web fixes (@tarcieri)
70
+ * Optional RedisMultiQueue failure backend, can be enabled with
71
+ FAILURE_BACKEND=redis_multi_queue env var (@tarcieri)
72
+ * resque:failures:sort rake task will migrate an existing "failed" queue into
73
+ separate failure queues per job queue, allowing an easy migration to
74
+ the RedisMultiQueue failure backend (@tarcieri)
75
+ * Disable forking completely with FORK_PER_JOB=false env var (@tarcieri)
76
+ * Report a failure when processes are killed with signals (@dylanahsmith)
77
+ * Enable registering of multiple Resque hooks (@panthomakos, @jonhyman)
78
+
79
+ ## 1.23.0 (2012-10-01)
80
+
81
+ * don't run `before_fork` hook if Resque can't fork (@kjwierenga, @tarcieri, #672, #697)
82
+ * don't run `after_fork` hook if Resque can't fork (@kjwierenga, @tarcieri, #672, #697)
83
+ * retry connecting to redis up to 3 times (@trevorturk, #693)
84
+ * pass exceptions raised by the worker into the Failure backend (@trevorturk, #693)
85
+
86
+ ## 1.22.0 (2012-08-21)
87
+
88
+ * unregister signal handlers in child process when ENV["TERM_CHILD"] is set (@dylanasmith, #621)
89
+ * new signal handling for TERM. See http://hone.heroku.com/resque/2012/08/21/resque-signals.html. (@wuputah, @yaaule, #638)
90
+ * supports calling perform hooks when using Resque.inline (@jonhyman, #506)
91
+
92
+ ## 1.21.0 (2012-07-02)
93
+
94
+ * Add a flag to make sure failure hooks are only ran once (jakemack, #546)
95
+ * Support updated MultiJSON API (@twinturbo)
96
+ * Fix worker logging in monit example config (@twinturbo)
97
+ * loosen dependency of redis-namespace to 1.x, support for redis-rb 3.0.x
98
+ * change '%' to '$' in the 'stop program' command for monit
99
+ * UTF8 sanitize exception messages when there's a failure (@brianmario, #507)
100
+ * don't share a redis connection between parent and child (@jsanders, #588)
101
+
102
+ ## 1.20.0 (2012-02-17)
103
+
104
+ * Fixed demos for ruby 1.9 (@BMorearty, #445)
105
+ * Fixed `#requeue` tests (@hone, #500)
106
+ * Web UI: optional trailing slashes of URLs (@elisehuard, #449)
107
+ * Allow * to appear anywhere in queue list (@tapajos, #405, #407)
108
+ * Wait for child with specific PID (@jacobkg)
109
+ * #decode raise takes a string when re-raising as a different exception class (Trevor Hart)
110
+ * Use Sinatra's `pubilc_folder` if it exists (@defunkt, #420, #421)
111
+ * Assign the job's worker before calling `before_fork` (@quirkey)
112
+ * Fix Resque::Helpers#constantize to work correctly on 1.9.2 (@rtlong)
113
+ * Added before & after hooks for dequeue (@humancopy, #398)
114
+ * daemonize support using `ENV["BACKGROUND"]` (@chrisleishman)
115
+ * requeue and remove failed jobs by queue name (@evanwhalen)
116
+ * `-r` flag for resque-web for redis connection (@gjastrab)
117
+ * Added `Resque.enqueue_to`: allows you to specif the queue and still run hooks (@dan-g)
118
+ * Web UI: Set the default encoding to UTF-8 (@elubow)
119
+ * fix finding worker pids on JRuby (John Andrews + Andrew Grieser)
120
+ * Added distributed redis support (@stipple)
121
+ * Added better failure hooks (@raykrueger)
122
+ * Added before & after dequeue hooks (@humancopy)
123
+
124
+ ## 1.19.0 (2011-09-01)
125
+
126
+ * Added Airbrake (formerly Hoptoad) support.
127
+ * Web UI: Added retry all button to failed jobs page
128
+ * Web UI: Show focus outline
129
+
130
+ ## 1.18.6 (2011-08-30)
131
+
132
+ * Bugfix: Use Rails 3 eager loading for resque:preload
133
+
134
+ ## 1.18.5 (2011-08-24)
135
+
136
+ * Added support for Travis CI
137
+ * Bugfix: preload only happens in production Rails environment
138
+
139
+ ## 1.18.4 (2011-08-23)
140
+
141
+ * Bugfix: preload task depends on setup
142
+
143
+ ## 1.18.3 (2011-08-23)
144
+
145
+ * Bugfix: Fix preloading on Rails 3.x.
146
+
147
+ ## 1.18.2 (2011-08-19)
148
+
149
+ * Fix RAILS_ROOT deprecation warning
150
+
151
+ ## 1.18.1 (2011-08-19)
152
+
153
+ * Bugfix: Use RAILS_ROOT in preload task
154
+
155
+ ## 1.18.0 (2011-08-18)
156
+
157
+ * Added before_enqueue hook.
158
+ * Resque workers now preload files under app/ in Rails
159
+ * Switch to MultiJSON
160
+ * Bugfix: Finding worker pids on Solaris
161
+ * Web UI: Fix NaN days ago for worker screens
162
+ * Web UI: Add Cache-Control header to prevent proxy caching
163
+ * Web UI: Update Resque.redis_id so it can be used in a distributed ring.
164
+
165
+ ## 1.17.1 (2011-05-27)
166
+
167
+ * Reverted `exit` change. Back to `exit!`.
168
+
169
+ ## 1.17.0 (2011-05-26)
170
+
171
+ * Workers exit with `exit` instead of `exit!`. This means you
172
+ can now use `at_exit` hooks inside workers.
173
+ * More monit typo fixes.
174
+ * Fixed bug in Hoptoad backend.
175
+ * Web UI: Wrap preformatted arguments.
176
+
177
+ ## 1.16.1 (2011-05-17)
178
+
179
+ * Bugfix: Resque::Failure::Hoptoad.configure works again
180
+ * Bugfix: Loading rake tasks
181
+
182
+ ## 1.16.0 (2011-05-16)
183
+
184
+ * Optional Hoptoad backend extracted into hoptoad_notifier. Install the gem to use it.
185
+ * Added `Worker#paused?` method
186
+ * Bugfix: Properly reseed random number generator after forking.
187
+ * Bugfix: Resque.redis=(<a Redis::Namespace>)
188
+ * Bugfix: Monit example stdout/stderr redirection
189
+ * Bugfix: Removing single failure now works with multiple failure backends
190
+ * Web: 'Remove Queue' now requires confirmation
191
+ * Web: Favicon!
192
+ * Web Bugfix: Dates display in Safari
193
+ * Web Bugfix: Dates display timezone
194
+ * Web Bugfix: Race condition querying working workers
195
+ * Web Bugfix: Fix polling /workers/all in resque-web
196
+
197
+ ## 1.15.0 (2011-03-18)
198
+
199
+ * Fallback to Redis.connect. Makes ENV variables and whatnot work.
200
+ * Fixed Sinatra 1.2 compatibility
201
+
202
+ ## 1.14.0 (2011-03-17)
203
+
204
+ * Sleep interval can now be a float
205
+ * Added Resque.inline to allow in-process performing of jobs (for testing)
206
+ * Fixed tests for Ruby 1.9.2
207
+ * Added Resque.validate(klass) to validate a Job
208
+ * Decode errors are no longer ignored to help debugging
209
+ * Web: Sinatra 1.2 compatibility
210
+ * Fixed after_enqueue hook to actually run in `Resque.enqueue`
211
+ * Fixed very_verbose timestamps to use 24 hour time (AM/PM wasn't included)
212
+ * Fixed monit example
213
+ * Fixed Worker#pid
214
+
215
+ ## 1.13.0 (2011-02-07)
216
+
217
+ * Depend on redis-namespace >= 0.10
218
+ * README tweaks
219
+ * Use thread_safe option when setting redis url
220
+ * Bugfix: worker pruning
221
+
222
+ ## 1.12.0 (2011-02-03)
223
+
224
+ * Added pidfile writing from `rake resque:work`
225
+ * Added Worker#pid method
226
+ * Added configurable location for `rake install`
227
+ * Bugfix: Errors in failure backend are rescue'd
228
+ * Bugfix: Non-working workers no longer counted in "working" count
229
+ * Bugfix: Don't think resque-web is a worker
230
+
231
+ ## 1.11.0 (2010-08-23)
232
+
233
+ * Web UI: Group /workers page by hostnames
234
+
235
+ ## 1.10.0 (2010-08-23)
236
+
237
+ * Support redis:// string format in `Resque.redis=`
238
+ * Using new cross-platform JSON gem.
239
+ * Added `after_enqueue` plugin hook.
240
+ * Added `shutdown?` method which can be overridden.
241
+ * Added support for the "leftright" gem when running tests.
242
+ * Grammarfix: In the README
243
+
244
+ ## 1.9.10 (2010-08-06)
245
+
246
+ * Bugfix: before_fork should get passed the job
247
+
248
+ ## 1.9.9 (2010-07-26)
249
+
250
+ * Depend on redis-namespace 0.8.0
251
+ * Depend on json_pure instead of json (for JRuby compat)
252
+ * Bugfix: rails_env display in stats view
253
+
254
+ ## 1.9.8 (2010-07-20)
255
+
256
+ * Bugfix: Worker.all should never return nil
257
+ * monit example: Fixed Syntax Error and adding environment to the rake task
258
+ * redis rake task: Fixed typo in copy command
259
+
260
+ ## 1.9.7 (2010-07-09)
261
+
262
+ * Improved memory usage in Job.destroy
263
+ * redis-namespace 0.7.0 now required
264
+ * Bugfix: Reverted $0 changes
265
+ * Web Bugfix: Payload-less failures in the web ui work
266
+
267
+ ## 1.9.6 (2010-06-22)
268
+
269
+ * Bugfix: Rakefile logging works the same as all the other logging
270
+
271
+ ## 1.9.5 (2010-06-16)
272
+
273
+ * Web Bugfix: Display the configured namespace on the stats page
274
+ * Revert Bugfix: Make ps -o more cross platform friendly
275
+
276
+ ## 1.9.4 (2010-06-14)
277
+
278
+ * Bugfix: Multiple failure backend gets exception information when created
279
+
280
+ ## 1.9.3 (2010-06-14)
281
+
282
+ * Bugfix: Resque#queues always returns an array
283
+
284
+ ## 1.9.2 (2010-06-13)
285
+
286
+ * Bugfix: Worker.all returning nil fix
287
+ * Bugfix: Make ps -o more cross platform friendly
288
+
289
+ ## 1.9.1 (2010-06-04)
290
+
291
+ * Less strict JSON dependency
292
+ * Included HISTORY.md in gem
293
+
294
+ ## 1.9.0 (2010-06-04)
295
+
296
+ * Redis 2 support
297
+ * Depend on redis-namespace 0.5.0
298
+ * Added Resque::VERSION constant (alias of Resque::Version)
299
+ * Bugfix: Specify JSON dependency
300
+ * Bugfix: Hoptoad plugin now works on 1.9
301
+
302
+ ## 1.8.5 (2010-05-18)
303
+
304
+ * Bugfix: Be more liberal in which Redis clients we accept.
305
+
306
+ ## 1.8.4 (2010-05-18)
307
+
308
+ * Try to resolve redis-namespace dependency issue
309
+
310
+ ## 1.8.3 (2010-05-17)
311
+
312
+ * Depend on redis-rb ~> 1.0.7
313
+
314
+ ## 1.8.2 (2010-05-03)
315
+
316
+ * Bugfix: Include "tasks/" dir in RubyGem
317
+
318
+ ## 1.8.1 (2010-04-29)
319
+
320
+ * Bugfix: Multiple failure backend did not support requeue-ing failed jobs
321
+ * Bugfix: Fix /failed when error has no backtrace
322
+ * Bugfix: Add `Redis::DistRedis` as a valid client
323
+
324
+ ## 1.8.0 (2010-04-07)
325
+
326
+ * Jobs that never complete due to killed worker are now failed.
327
+ * Worker "working" state is now maintained by the parent, not the child.
328
+ * Stopped using deprecated redis.rb methods
329
+ * `Worker.working` race condition fixed
330
+ * `Worker#process` has been deprecated.
331
+ * Monit example fixed
332
+ * Redis::Client and Redis::Namespace can be passed to `Resque.redis=`
333
+
334
+ ## 1.7.1 (2010-04-02)
335
+
336
+ * Bugfix: Make job hook execution order consistent
337
+ * Bugfix: stdout buffering in child process
338
+
339
+ ## 1.7.0 (2010-03-31)
340
+
341
+ * Job hooks API. See docs/HOOKS.md.
342
+ * web: Hovering over dates shows a timestamp
343
+ * web: AJAXify retry action for failed jobs
344
+ * web bugfix: Fix pagination bug
345
+
346
+ ## 1.6.1 (2010-03-25)
347
+
348
+ * Bugfix: Workers may not be clearing their state correctly on
349
+ shutdown
350
+ * Added example monit config.
351
+ * Exception class is now recorded when an error is raised in a
352
+ worker.
353
+ * web: Unit tests
354
+ * web: Show namespace in header and footer
355
+ * web: Remove a queue
356
+ * web: Retry failed jobs
357
+
358
+ ## 1.6.0 (2010-03-09)
359
+
360
+ * Added `before_first_fork`, `before_fork`, and `after_fork` hooks.
361
+ * Hoptoad: Added server_environment config setting
362
+ * Hoptoad bugfix: Don't depend on RAILS_ROOT
363
+ * 1.8.6 compat fixes
364
+
365
+ ## 1.5.2 (2010-03-03)
366
+
367
+ * Bugfix: JSON check was crazy.
368
+
369
+ ## 1.5.1 (2010-03-03)
370
+
371
+ * `Job.destroy` and `Resque.dequeue` return the # of destroyed jobs.
372
+ * Hoptoad notifier improvements
373
+ * Specify the namespace with `resque-web` by passing `-N namespace`
374
+ * Bugfix: Don't crash when trying to parse invalid JSON.
375
+ * Bugfix: Non-standard namespace support
376
+ * Web: Red backgound for queue "failed" only shown if there are failed jobs.
377
+ * Web bugfix: Tabs highlight properly now
378
+ * Web bugfix: ZSET partial support in stats
379
+ * Web bugfix: Deleting failed jobs works again
380
+ * Web bugfix: Sets (or zsets, lists, etc) now paginate.
381
+
382
+ ## 1.5.0 (2010-02-17)
383
+
384
+ * Version now included in procline, e.g. `resque-1.5.0: Message`
385
+ * Web bugfix: Ignore idle works in the "working" page
386
+ * Added `Resque::Job.destroy(queue, klass, *args)`
387
+ * Added `Resque.dequeue(klass, *args)`
388
+
389
+ ## 1.4.0 (2010-02-11)
390
+
391
+ * Fallback when unable to bind QUIT and USR1 for Windows and JRuby.
392
+ * Fallback when no `Kernel.fork` is provided (for IronRuby).
393
+ * Web: Rounded corners in Firefox
394
+ * Cut down system calls in `Worker#prune_dead_workers`
395
+ * Enable switching DB in a Redis server from config
396
+ * Support USR2 and CONT to stop and start job processing.
397
+ * Web: Add example failing job
398
+ * Bugfix: `Worker#unregister_worker` shouldn't call `done_working`
399
+ * Bugfix: Example god config now restarts Resque properly.
400
+ * Multiple failure backends now permitted.
401
+ * Hoptoad failure backend updated to new API
402
+
403
+ ## 1.3.1 (2010-01-11)
404
+
405
+ * Vegas bugfix: Don't error without a config
406
+
407
+ ## 1.3.0 (2010-01-11)
408
+
409
+ * Use Vegas for resque-web
410
+ * Web Bugfix: Show proper date/time value for failed_at on Failures
411
+ * Web Bugfix: Make the / route more flexible
412
+ * Add Resque::Server.tabs array (so plugins can add their own tabs)
413
+ * Start using [Semantic Versioning](http://semver.org/)
414
+
415
+ ## 1.2.4 (2009-12-15)
416
+
417
+ * Web Bugfix: fix key links on stat page
418
+
419
+ ## 1.2.3 (2009-12-15)
420
+
421
+ * Bugfix: Fixed `rand` seeding in child processes.
422
+ * Bugfix: Better JSON encoding/decoding without Yajl.
423
+ * Bugfix: Avoid `ps` flag error on Linux
424
+ * Add `PREFIX` observance to `rake` install tasks.
425
+
426
+ ## 1.2.2 (2009-12-08)
427
+
428
+ * Bugfix: Job equality was not properly implemented.
429
+
430
+ ## 1.2.1 (2009-12-07)
431
+
432
+ * Added `rake resque:workers` task for starting multiple workers.
433
+ * 1.9.x compatibility
434
+ * Bugfix: Yajl decoder doesn't care about valid UTF-8
435
+ * config.ru loads RESQUECONFIG if the ENV variable is set.
436
+ * `resque-web` now sets RESQUECONFIG
437
+ * Job objects know if they are equal.
438
+ * Jobs can be re-queued using `Job#recreate`
439
+
440
+ ## 1.2.0 (2009-11-25)
441
+
442
+ * If USR1 is sent and no child is found, shutdown.
443
+ * Raise when a job class does not respond to `perform`.
444
+ * Added `Resque.remove_queue` for deleting a queue
445
+
446
+ ## 1.1.0 (2009-11-04)
447
+
448
+ * Bugfix: Broken ERB tag in failure UI
449
+ * Bugfix: Save the worker's ID, not the worker itself, in the failure module
450
+ * Redesigned the sinatra web interface
451
+ * Added option to clear failed jobs
452
+
453
+ ## 1.0.0 (2009-11-03)
454
+
455
+ * First release.