job_notifier 0.2.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +3 -3
  4. data/app/assets/javascripts/job_notifier/notifier.js +29 -8
  5. data/app/controllers/job_notifier/jobs_controller.rb +6 -2
  6. data/app/models/job_notifier/job.rb +6 -5
  7. data/config/routes.rb +2 -2
  8. data/lib/job_notifier/version.rb +1 -1
  9. data/spec/dummy/db/development.sqlite3 +0 -0
  10. data/spec/dummy/log/development.log +4427 -0
  11. data/spec/dummy/log/test.log +2439 -0
  12. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-s/-suRtCfYOrTPh-OYY_74XGPh7Y6oP7DNwW0rmfDQo_Q.cache +1 -0
  13. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0O/0OFmEWsMx6euelJWKFS8HanAuWO_TZMHG1uMmquv5h8.cache +0 -0
  14. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1J/1JULcnb-2BG9tGGg5mEwew36P4Hr3c_VfIQLeNMk6WI.cache +1 -0
  15. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2c/2cgGDmk7SKekjJSg2f7CR7PjzZ-zZfTAEMyUWkXkgKg.cache +1 -0
  16. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/69/699d-7Piuy3wrCEnLKBYtYIU4ByLplxbmZc7_NdfzkQ.cache +1 -0
  17. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9g/9glnI10sS2b7IsCc6d6xWEqsTy_skQkAk0v0ZGi0qOE.cache +0 -0
  18. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cs/CsgITdnoK8_gEUOO-VFmXXdSp3U2e2JCyNXec6FRZlY.cache +3 -0
  19. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gr/Gr5cnGXW1doXQYl_NygCfejoZ0PgoBoLCpK0dgiuTuI.cache +1 -0
  20. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hu/HuBvYcAhJ5vYOW9Ko26tqT7XXu9hylRYzU_OF8VCeMk.cache +1 -0
  21. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KS/KSu-e9FI0Befm9W35SASRLJt1yP2Bc9-qKxfztbqHOg.cache +0 -0
  22. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/O_/O_5AhRZ4iT0lKBOJhL0aHovX5Ut0l16558Bv_lAvKmU.cache +1 -0
  23. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RB/RBcQtU6eGW-wUSyFqwLPrxxnhu70_H49VDjhfcpbnTI.cache +3 -0
  24. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SE/SEQbWr78CyYx7rnnRZf7GS-LJTSPfqUA3uJ8KY1G3PQ.cache +0 -0
  25. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TQ/TQq5V1ljP9OD-SLRVx6E6CrdloMrdKkkjEeN-IaL5tI.cache +1 -0
  26. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_F/_FTCX8IrNz1itvWzXzhUhRUtxvOBhuTCX8na3YEnNu0.cache +0 -0
  27. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/de/deF1cWmXYITgRhwvrAebLHKAIiPlcnxy_3W-HyQaRso.cache +2 -0
  28. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jK/JKLSg7t3eFfbV-roK53Pd82dr3GgzUfrnr8Xeu7xzco.cache +0 -0
  29. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jK/jKTjv3mxE2jqqYhMwTTGbVpv3K0GXlcmuwm6eicRyxE.cache +0 -0
  30. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mv/mv-DEGhJGa4KLFMCPc6WmoIGGb4ru6XKw8bKcufo86c.cache +1 -0
  31. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/na/navl-SipsWFdoSUzYKfmf7ej4IZO6GYglHSNI33e6xI.cache +1 -0
  32. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uF/uFF9qxosnliXunEcEOURgkrao0So6iH72S6UiiTKBFk.cache +0 -0
  33. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xD/xDxvKXU0_bX2ppXE6mJFn-J0wMRqwWQNGNMJyVhiXXM.cache +1 -0
  34. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yi/yim5rbExV0wwLjPRDfnymvZTgAttZZaT4cTn0iNNPP8.cache +0 -0
  35. data/spec/dummy/tmp/pids/server.pid +1 -0
  36. data/spec/models/job_notifier/job_spec.rb +18 -3
  37. metadata +50 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 813294d11402f27d16f0bbe8b06d89a8a87f87b6
4
- data.tar.gz: f75746f4cbcf03310f3f2ae55aa3cd5aeb625cdc
3
+ metadata.gz: a68d1d5104e379f3ada2d94b7c32b034fbdb73e0
4
+ data.tar.gz: 01ba5257b1ebbf75d5846577a19e385a1e8bf587
5
5
  SHA512:
6
- metadata.gz: 31bf07ea0ba043d2de9771d715954a572f4c3620eabea7da9ccabf0889acc9cbdd373cddb5b2e9469d91c6b87e1458b21e421c6b44cdeccba6a72f314e46ac5f
7
- data.tar.gz: 2aa14ea7ef333066cbc5b7decbbccb1fc07a039f4d606282d3941143a3984730937c5f36220230bf0876b96cb33990b6a31c436be3c1a398009b0eda41696204
6
+ metadata.gz: 9aab43a3f1e70c51225c8a8ea4676eac6dc86b282d839943d11961ee5849e64b804f6dd965bee08a9afa62942e59d8a911022fc3c13d89000bae45e30e05a692
7
+ data.tar.gz: 24986bffc98509d1134ef828d510440918d005de91e079e281526555e80eadd28b91b532c9cfa25f06446fc1e70ddc928fc2d19e865132dbb8cf26d6227e2c15
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ### v1.0.0
6
+
7
+ #### Added
8
+
9
+ - Replace `GET /jobs` with `GET /:identifier/jobs/pending` and `PUT /:identifier/jobs/notify` to mark jobs as notified in a second step.
10
+
5
11
  ### v0.2.1
6
12
 
7
13
  #### Fixed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- job_notifier (0.2.1)
4
+ job_notifier (1.0.0)
5
5
  enumerize (~> 1.0.0, ~> 1.0)
6
6
  rails (~> 4.2, >= 4.2.0)
7
7
 
@@ -65,9 +65,9 @@ GEM
65
65
  mail (2.6.4)
66
66
  mime-types (>= 1.16, < 4)
67
67
  method_source (0.8.2)
68
- mime-types (3.0)
68
+ mime-types (3.1)
69
69
  mime-types-data (~> 3.2015)
70
- mime-types-data (3.2016.0221)
70
+ mime-types-data (3.2016.0521)
71
71
  mini_portile2 (2.0.0)
72
72
  minitest (5.8.4)
73
73
  nokogiri (1.6.7.2)
@@ -1,6 +1,7 @@
1
1
  (function(window){
2
2
  'use strict';
3
3
  function defineLibrary(){
4
+ var MILLISECONDS_TO_GET_JOBS = 5000;
4
5
  var JobNotifier = {};
5
6
 
6
7
  JobNotifier.init = function() {
@@ -12,24 +13,44 @@
12
13
  }
13
14
 
14
15
  JobNotifier.rootUrl = body.dataset.rootUrl;
15
- setInterval(JobNotifier.poll, 5000);
16
+ JobNotifier.findJobs();
16
17
  };
17
18
 
18
- JobNotifier.poll = function() {
19
+ JobNotifier.performRequest = function(method, action, onLoadCallback) {
19
20
  var oReq = new XMLHttpRequest();
20
- oReq.onload = JobNotifier.reqListener;
21
+ oReq.onload = onLoadCallback;
21
22
  oReq.onerror = JobNotifier.onError;
22
- var url = JobNotifier.rootUrl + 'job_notifier/jobs.json?identifier=' + JobNotifier.jobIdentifier;
23
- oReq.open('get', url, true);
23
+ var url = JobNotifier.rootUrl + 'job_notifier/' + JobNotifier.jobIdentifier + '/jobs/' + action + '.json';
24
+ oReq.open(method, url, true);
24
25
  oReq.send();
25
26
  };
26
27
 
27
- JobNotifier.reqListener = function() {
28
+ JobNotifier.findJobs = function() {
29
+ setTimeout(JobNotifier.findPendingJobs, MILLISECONDS_TO_GET_JOBS);
30
+ };
31
+
32
+ JobNotifier.findPendingJobs = function() {
33
+ JobNotifier.performRequest('get', 'pending', JobNotifier.onPendingJobsLoad);
34
+ };
35
+
36
+ JobNotifier.notifyJobs = function() {
37
+ JobNotifier.performRequest('put', 'notify', JobNotifier.onNotifyJobsLoad);
38
+ };
39
+
40
+ JobNotifier.onPendingJobsLoad = function() {
28
41
  var data = JSON.parse(this.responseText);
29
42
 
30
- if(data.length > 0) {
31
- JobNotifier.onNotify(data);
43
+ if(data.length === 0) {
44
+ JobNotifier.findJobs();
45
+ return;
32
46
  }
47
+
48
+ JobNotifier.onNotify(data);
49
+ JobNotifier.notifyJobs();
50
+ };
51
+
52
+ JobNotifier.onNotifyJobsLoad = function() {
53
+ JobNotifier.findJobs();
33
54
  };
34
55
 
35
56
  JobNotifier.onNotify = function(data) {
@@ -3,8 +3,12 @@ module JobNotifier
3
3
  skip_before_action :verify_authenticity_token
4
4
 
5
5
  def index
6
- jobs = Job.unnotified_by_identifier!(params[:identifier])
7
- render json: jobs
6
+ render json: Job.unnotified_by_identifier(params[:identifier])
7
+ end
8
+
9
+ def update
10
+ Job.notify_by_identifier(params[:identifier])
11
+ head :no_content
8
12
  end
9
13
  end
10
14
  end
@@ -12,11 +12,12 @@ module JobNotifier
12
12
  job.update_columns(result: data.to_s, status: status, notified: false)
13
13
  end
14
14
 
15
- def self.unnotified_by_identifier!(encoded_identifier)
16
- jobs = JobNotifier::Job.where(identifier: encoded_identifier).where(notified: false)
17
- job_ids = jobs.ids
18
- jobs.update_all(notified: true)
19
- where(id: job_ids)
15
+ def self.unnotified_by_identifier(encoded_identifier)
16
+ JobNotifier::Job.where(identifier: encoded_identifier).where(notified: false)
17
+ end
18
+
19
+ def self.notify_by_identifier(encoded_identifier)
20
+ unnotified_by_identifier(encoded_identifier).update_all(notified: true)
20
21
  end
21
22
  end
22
23
  end
data/config/routes.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  JobNotifier::Engine.routes.draw do
2
- resources :jobs, only: [:index]
3
- resources :adapters, only: [:show]
2
+ get ":identifier/jobs/pending", to: "jobs#index"
3
+ put ":identifier/jobs/notify", to: "jobs#update"
4
4
  end
@@ -1,3 +1,3 @@
1
1
  module JobNotifier
2
- VERSION = "0.2.1"
2
+ VERSION = "1.0.0"
3
3
  end
Binary file