jobly 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ad67b7e96a1ee27e3034c812d05026f922b72585d70d0c8085f9173f8e70d04
4
- data.tar.gz: 9614bb05c9da5bf17a9e2d25e3aafdd859bf811828f71c6a511557dc926985ae
3
+ metadata.gz: efd28d722eeb4dc40024eda54bcc5f302a61db6a0036ce836435aeeafb6402e0
4
+ data.tar.gz: 949714c32284267a829dd32be6277739e3fb097a4343cbcecd3aa6805a03065f
5
5
  SHA512:
6
- metadata.gz: c891c3bbff7c1c37180fdc186b22f63a50730f978125546e48a2231ebeab630bb27312016c3d47fa39afcc48dd79bb0e59bb96c1abafebbc16804f77eec8da42
7
- data.tar.gz: f021ecf23d579f53fc713b4657ca2613b429da6e7ff2e503e21bf9edb3d4b9f18bf48362349deafd0e1fab36324d51f029ea2d4e9f8dc5d38b43912ce63dce42
6
+ metadata.gz: e7438be9408c00d912ea9ebf1f80cbb38e74463c37a87da2b2e85c491dec526450e8d22f15f8a65e6ee45a1daf98df2f7955a5bcd59068102b5f38b4c976727f
7
+ data.tar.gz: 852d6c6a6b0d3f224856a5c027f83d417bc9431edb766dc80ae653afd4d5eecba4cf6e0e3c71b720382fe5ffe98a42fbb3203802bb1a4989bfd11d8202215bbb
data/README.md CHANGED
@@ -1,12 +1,17 @@
1
+ <div align='center'>
2
+
3
+ <img src='/assets/logo.svg' width=300>
4
+
1
5
  Jobly
2
6
  ==================================================
3
7
 
8
+ Compact job server with API, CLI, Web UI and a Sidekiq heart.
9
+
4
10
  [![Gem Version](https://badge.fury.io/rb/jobly.svg)](https://badge.fury.io/rb/jobly)
5
11
  [![Build Status](https://travis-ci.com/DannyBen/jobly.svg?branch=master)](https://travis-ci.com/DannyBen/jobly)
12
+ [![Maintainability](https://api.codeclimate.com/v1/badges/b3932ebd153d831583e2/maintainability)](https://codeclimate.com/github/DannyBen/jobly/maintainability)
6
13
 
7
- ---
8
-
9
- Job server toolbelt with API, CLI, Web UI and a Sidekiq heart.
14
+ </div>
10
15
 
11
16
  ---
12
17
 
@@ -16,6 +21,7 @@ Installation
16
21
  $ gem install jobly
17
22
 
18
23
 
24
+
19
25
  What's in the Box
20
26
  --------------------------------------------------
21
27
 
@@ -27,15 +33,19 @@ sidekiq backgronud jobs system. It includes the following components:
27
33
  - **Web API** - for executing jobs.
28
34
  - **Web Dashboard** - including job progress and status.
29
35
 
30
- Getting Started
36
+
37
+
38
+ Quick Start
31
39
  --------------------------------------------------
32
40
 
33
- TODO
41
+ Follow one of these annotated [examples](/examples).
42
+
34
43
 
35
44
 
36
45
  Usage
37
46
  --------------------------------------------------
38
47
 
48
+
39
49
  ### Server
40
50
 
41
51
  To start the server run `jobly server` and open <http://localhost:3000/>
@@ -44,7 +54,7 @@ in your browser.
44
54
  This will start a webserver with two primary entrypoints:
45
55
 
46
56
  - `/` (root) - a dashboard for your background job processes.
47
- - `/do/:job?param=value` - an API for executing jobs
57
+ - `/do/JobName?param=value` - an API for executing jobs
48
58
 
49
59
 
50
60
  ### Worker
@@ -59,18 +69,43 @@ There are three ways to run a job from the command line:
59
69
  Run the job locally, without going through any of the background job
60
70
  processing chain:
61
71
 
62
- ```ruby
63
- jobly run JobName param:value
64
- ```
72
+ $ jobly run JobName param:value
73
+
65
74
 
66
75
  Run the job locally, but wait for a worker to process it.
67
76
 
68
- ```ruby
69
- jobly run --later JobName param:value
70
- ```
77
+ $ jobly run --later JobName param:value
78
+
71
79
 
72
80
  Send a job through the API (either localhost or remote).
73
81
 
74
- ```ruby
75
- jobly send JobName param:value
82
+ $ jobly send JobName param:value
83
+
84
+
85
+ ### Running jobs through the API
86
+
87
+ The API supports running jobs either by GET or by POST in the following URL
88
+ structure:
89
+
90
+ <http://localhost:3000/do/JobName>
91
+
92
+ Using GET:
93
+
94
+ ```
95
+ $ curl localhost:3000/do/Build?deploy=no
96
+ # => {"status":"received","job":"Build","params":{"deploy":"no"}}
97
+ ```
98
+
99
+ Using POST:
100
+
101
+ ```
102
+ $ curl -XPOST localhost:3000/do/Build -d deploy=yes
103
+ {"status":"received","job":"Build","params":{"deploy":"yes"}}
76
104
  ```
105
+
106
+
107
+ Building Jobs
108
+ --------------------------------------------------
109
+
110
+ TODO
111
+
@@ -8,7 +8,7 @@ module Jobly
8
8
  usage "jobly config (-h|--help)"
9
9
 
10
10
  def run
11
- line "custom config file", short_config_path, Jobly.custom_config?
11
+ line "custom config file", short_config_path, !Jobly.custom_config?
12
12
  Jobly.options.each do |key, value|
13
13
  if key.to_s.end_with? '_path'
14
14
  line key, value, !Dir.exist?(value)
@@ -20,7 +20,7 @@ module Jobly
20
20
  job_class = Jobs.get_class! job
21
21
 
22
22
  if args['--later']
23
- say "!txtgrn!Scheduling"
23
+ say "Scheduling !txtgrn!#{job_class}"
24
24
  if params.empty?
25
25
  job_class.perform_async
26
26
  else
@@ -28,7 +28,7 @@ module Jobly
28
28
  end
29
29
 
30
30
  else
31
- say "!txtgrn!Running"
31
+ say "Running !txtgrn!#{job_class}"
32
32
  job_class.new.perform params
33
33
  end
34
34
  end
data/lib/jobly/jobs.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  module Jobly
2
2
  module Jobs
3
3
  def self.get_class(job)
4
- Object.const_get namespaced_job(job) rescue nil
4
+ Object.const_get full_job_name(job) rescue nil
5
5
  end
6
6
 
7
7
  def self.get_class!(job)
8
- Object.const_get namespaced_job(job)
8
+ Object.const_get full_job_name(job)
9
9
  rescue NameError
10
10
  raise JobNotFound, job
11
11
  end
@@ -15,7 +15,8 @@ module Jobly
15
15
  Dir["#{Jobly.full_jobs_path}/**/*.rb"].each { |file| require file }
16
16
  end
17
17
 
18
- def self.namespaced_job(job)
18
+ def self.full_job_name(job)
19
+ job = job.gsub '/', '::'
19
20
  if Jobly.jobs_namespace
20
21
  "#{Jobly.jobs_namespace}::#{job}"
21
22
  else
data/lib/jobly/server.rb CHANGED
@@ -29,13 +29,15 @@ module Jobly
29
29
  }.to_json
30
30
  end
31
31
 
32
- get '/:job' do
33
- job = params.delete :job
32
+ get '/*' do
33
+ job = params[:splat].first
34
+ params.delete :splat
34
35
  add_job job, params
35
36
  end
36
37
 
37
- post '/:job' do
38
- job = params.delete :job
38
+ post '/*' do
39
+ job = params[:splat].first
40
+ params.delete :splat
39
41
  add_job job, params
40
42
  end
41
43
 
data/lib/jobly/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jobly
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jobly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-08 00:00:00.000000000 Z
11
+ date: 2019-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mister_bin
@@ -204,7 +204,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
204
204
  requirements:
205
205
  - - ">="
206
206
  - !ruby/object:Gem::Version
207
- version: 2.4.0
207
+ version: 2.5.0
208
208
  required_rubygems_version: !ruby/object:Gem::Requirement
209
209
  requirements:
210
210
  - - ">="