job_notifier 0.2.1 → 1.0.0

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 (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