qpush 0.1.2 → 0.1.4

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/.byebug_history +74 -0
  3. data/bin/qpush-server +0 -1
  4. data/bin/qpush-web +7 -1
  5. data/jobs/fail_job.rb +11 -0
  6. data/jobs/test_job.rb +2 -0
  7. data/lib/qpush/config.rb +0 -20
  8. data/lib/qpush/job.rb +11 -7
  9. data/lib/qpush/jobs/queue_delayed.rb +17 -0
  10. data/lib/qpush/redis.rb +36 -0
  11. data/lib/qpush/server.rb +20 -2
  12. data/lib/qpush/server/apis.rb +46 -0
  13. data/lib/qpush/server/apis/delay.rb +37 -0
  14. data/lib/qpush/server/apis/execute.rb +32 -0
  15. data/lib/qpush/server/apis/fail.rb +39 -0
  16. data/lib/qpush/server/apis/history.rb +36 -0
  17. data/lib/qpush/server/apis/morgue.rb +24 -0
  18. data/lib/qpush/server/apis/perform.rb +24 -0
  19. data/lib/qpush/server/apis/queue.rb +24 -0
  20. data/lib/qpush/server/apis/setup.rb +27 -0
  21. data/lib/qpush/server/apis/success.rb +39 -0
  22. data/lib/qpush/server/delay.rb +5 -5
  23. data/lib/qpush/server/errors.rb +1 -16
  24. data/lib/qpush/server/heartbeat.rb +28 -0
  25. data/lib/qpush/server/jobs.rb +10 -55
  26. data/lib/qpush/server/launcher.rb +5 -5
  27. data/lib/qpush/server/loader.rb +38 -0
  28. data/lib/qpush/server/perform.rb +2 -2
  29. data/lib/qpush/server/queue.rb +2 -2
  30. data/lib/qpush/server/worker.rb +1 -0
  31. data/lib/qpush/version.rb +1 -1
  32. data/lib/qpush/web.rb +10 -1
  33. data/lib/qpush/web/apis/crons.rb +34 -0
  34. data/lib/qpush/web/apis/heart.rb +12 -0
  35. data/lib/qpush/web/apis/history.rb +28 -0
  36. data/lib/qpush/web/apis/jobs.rb +26 -0
  37. data/lib/qpush/web/apis/morgue.rb +30 -0
  38. data/lib/qpush/web/apis/queue_delayed.rb +29 -0
  39. data/lib/qpush/web/apis/queued.rb +0 -0
  40. data/lib/qpush/web/apis/retries.rb +40 -0
  41. data/lib/qpush/web/apis/stats.rb +58 -0
  42. data/lib/qpush/web/get.rb +32 -34
  43. data/lib/qpush/web/post.rb +8 -0
  44. data/lib/qpush/web/server.rb +34 -5
  45. data/qpush.gemspec +1 -0
  46. metadata +40 -3
  47. data/lib/qpush/server/execute.rb +0 -100
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_runtime_dependency "object_validator"
24
24
  spec.add_runtime_dependency "sequel", "~> 4.18"
25
25
  spec.add_runtime_dependency "sinatra", "~> 1.4"
26
+ spec.add_runtime_dependency "sinatra-cross_origin"
26
27
  spec.add_runtime_dependency "parse-cron", "~> 0.1"
27
28
  spec.add_development_dependency "byebug"
28
29
  spec.add_development_dependency "bundler", "~> 1.12"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qpush
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Sweeting
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-20 00:00:00.000000000 Z
11
+ date: 2016-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sinatra-cross_origin
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: parse-cron
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -171,19 +185,32 @@ files:
171
185
  - bin/qpush-server
172
186
  - bin/qpush-web
173
187
  - bin/setup
188
+ - jobs/fail_job.rb
174
189
  - jobs/test_job.rb
175
190
  - lib/qpush.rb
176
191
  - lib/qpush/base.rb
177
192
  - lib/qpush/config.rb
178
193
  - lib/qpush/job.rb
194
+ - lib/qpush/jobs/queue_delayed.rb
179
195
  - lib/qpush/redis.rb
180
196
  - lib/qpush/server.rb
197
+ - lib/qpush/server/apis.rb
198
+ - lib/qpush/server/apis/delay.rb
199
+ - lib/qpush/server/apis/execute.rb
200
+ - lib/qpush/server/apis/fail.rb
201
+ - lib/qpush/server/apis/history.rb
202
+ - lib/qpush/server/apis/morgue.rb
203
+ - lib/qpush/server/apis/perform.rb
204
+ - lib/qpush/server/apis/queue.rb
205
+ - lib/qpush/server/apis/setup.rb
206
+ - lib/qpush/server/apis/success.rb
181
207
  - lib/qpush/server/database.rb
182
208
  - lib/qpush/server/delay.rb
183
209
  - lib/qpush/server/errors.rb
184
- - lib/qpush/server/execute.rb
210
+ - lib/qpush/server/heartbeat.rb
185
211
  - lib/qpush/server/jobs.rb
186
212
  - lib/qpush/server/launcher.rb
213
+ - lib/qpush/server/loader.rb
187
214
  - lib/qpush/server/logger.rb
188
215
  - lib/qpush/server/manager.rb
189
216
  - lib/qpush/server/perform.rb
@@ -191,7 +218,17 @@ files:
191
218
  - lib/qpush/server/worker.rb
192
219
  - lib/qpush/version.rb
193
220
  - lib/qpush/web.rb
221
+ - lib/qpush/web/apis/crons.rb
222
+ - lib/qpush/web/apis/heart.rb
223
+ - lib/qpush/web/apis/history.rb
224
+ - lib/qpush/web/apis/jobs.rb
225
+ - lib/qpush/web/apis/morgue.rb
226
+ - lib/qpush/web/apis/queue_delayed.rb
227
+ - lib/qpush/web/apis/queued.rb
228
+ - lib/qpush/web/apis/retries.rb
229
+ - lib/qpush/web/apis/stats.rb
194
230
  - lib/qpush/web/get.rb
231
+ - lib/qpush/web/post.rb
195
232
  - lib/qpush/web/server.rb
196
233
  - lib/qpush/web/server.ru
197
234
  - qpush.gemspec
@@ -1,100 +0,0 @@
1
- module QPush
2
- module Server
3
- class Execute
4
- def initialize(job)
5
- @job = job
6
- end
7
-
8
- def call
9
- measure_run_time { job_object.call }
10
- ExecutionSuccess.call(@job)
11
- rescue => e
12
- ExecutionFail.call(@job, e)
13
- end
14
-
15
- private
16
-
17
- def measure_run_time
18
- start = Time.now
19
- yield
20
- finish = Time.now
21
- @job.run_time = "#{((finish - start) * 1000.0).round(3)} ms"
22
- end
23
-
24
- def job_object
25
- klass = Object.const_get(@job.klass)
26
- @job.args.empty? ? klass.new : klass.new(@job.args)
27
- end
28
- end
29
-
30
- class ExecutionFail
31
- def self.call(*args)
32
- failed = ExecutionFail.new(*args)
33
- failed.call
34
- end
35
-
36
- def initialize(job, error)
37
- @job = job
38
- @error = error
39
- end
40
-
41
- def call
42
- update_job
43
- stat_increment
44
- log_error
45
- end
46
-
47
- private
48
-
49
- def update_job
50
- @job.bump_fail
51
- @job.api.retry if @job.retry_job?
52
- end
53
-
54
- def stat_increment
55
- QPush.redis.with do |c|
56
- c.incr("#{QPush.config.stats_namespace}:dead") if @job.dead_job?
57
- c.incr("#{QPush.config.stats_namespace}:failed")
58
- end
59
- end
60
-
61
- def log_error
62
- Server.log.err("Job FAILED | #{@job.klass} | #{@job.id} | #{@error.message}")
63
- end
64
- end
65
-
66
- class ExecutionSuccess
67
- def self.call(*args)
68
- success = ExecutionSuccess.new(*args)
69
- success.call
70
- end
71
-
72
- def initialize(job)
73
- @job = job
74
- end
75
-
76
- def call
77
- update_job
78
- stat_increment
79
- log_success
80
- end
81
-
82
- private
83
-
84
- def update_job
85
- @job.bump_success
86
- @job.api.delay if @job.delay_job?
87
- end
88
-
89
- def stat_increment
90
- QPush.redis.with do |c|
91
- c.incr("#{QPush.config.stats_namespace}:success")
92
- end
93
- end
94
-
95
- def log_success
96
- Server.log.info("Job SUCCESS | #{@job.klass} with ID: #{@job.id} | #{@job.run_time}")
97
- end
98
- end
99
- end
100
- end