jobly 0.4.1 → 0.4.2
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 +4 -4
- data/README.md +15 -6
- data/bin/jobly +11 -12
- data/lib/jobly.rb +3 -1
- data/lib/jobly/helpers.rb +15 -0
- data/lib/jobly/helpers/README.md +8 -0
- data/lib/jobly/{logging.rb → helpers/logging.rb} +0 -0
- data/lib/jobly/helpers/settings.rb +24 -0
- data/lib/jobly/helpers/shell.rb +9 -0
- data/lib/jobly/helpers/slack.rb +43 -0
- data/lib/jobly/job.rb +4 -3
- data/lib/jobly/templates/full/app/other_class.rb +13 -0
- data/lib/jobly/version.rb +1 -1
- metadata +67 -29
- data/lib/jobly/job_extensions/shell.rb +0 -11
- data/lib/jobly/job_extensions/slack.rb +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cf3d3077df95fb824e2012b4d381f262ebfce21968c08ded075240ae8861856
|
4
|
+
data.tar.gz: 89dc7fcfef708b922c8a3297dce7c4be2c7948b6c5f5ffcf7a8a666286837695
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e44878130cb1cc5ebd8d4ff044bc3d73a9435fb49fb52eee1074e893460e07a621d43f382501be1b63d9aa9d9df897ffee3d88030c058db9f88c6ac266829864
|
7
|
+
data.tar.gz: 401daa2e8a8d6277452e62a9d2964b48155564006a2aff7752c3fef8a36200ec48678bd94fc78377c8a3d8df1005645b80cde4c30d5a016b7fe7765cec730663
|
data/README.md
CHANGED
@@ -27,7 +27,7 @@ Installation
|
|
27
27
|
|
28
28
|
$ gem install jobly
|
29
29
|
|
30
|
-
Or with the official [Jobly docker image][
|
30
|
+
Or with the official [Jobly docker image][docker].
|
31
31
|
|
32
32
|
|
33
33
|
What's in the Box
|
@@ -47,10 +47,19 @@ sidekiq backgronud jobs system. It includes the following components:
|
|
47
47
|
Documentation
|
48
48
|
--------------------------------------------------
|
49
49
|
|
50
|
-
- Visit the [Jobly documentation][
|
51
|
-
- Visit the [interactive demo on Katacoda][
|
50
|
+
- Visit the [Jobly documentation][docs].
|
51
|
+
- Visit the [interactive demo on Katacoda][katacoda].
|
52
52
|
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
Contributing / Support
|
55
|
+
--------------------------------------------------
|
56
|
+
|
57
|
+
If you experience any issue, have a question or a suggestion, or if you wish
|
58
|
+
to contribute, feel free to [open an issue][issues].
|
59
|
+
|
60
|
+
---
|
61
|
+
|
62
|
+
[docs]: https://jobly.dannyb.co
|
63
|
+
[docker]: https://github.com/dannyben/docker-jobly
|
64
|
+
[katacoda]: https://www.katacoda.com/dannyb/scenarios/jobly
|
65
|
+
[issues]: https://github.com/DannyBen/jobly/issues
|
data/bin/jobly
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'colsole'
|
3
|
+
require 'pretty_trace/enable-trim'
|
3
4
|
include Colsole
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
require 'jobly/boot'
|
6
|
+
require 'jobly'
|
7
|
+
require 'jobly/boot'
|
8
8
|
|
9
|
-
|
9
|
+
PrettyTrace.filter [
|
10
|
+
%r[commands/run],
|
11
|
+
%r[mister_bin],
|
12
|
+
%r[bin/jobly],
|
13
|
+
%r[bin/ruby],
|
14
|
+
]
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
rescue => e
|
14
|
-
puts e.backtrace.reverse if ENV['DEBUG']
|
15
|
-
say! "!txtred!#{e.class}: #{e.message}"
|
16
|
-
say! "Run with !txtpur!DEBUG=1!txtrst! for backtrace details" unless ENV['DEBUG']
|
17
|
-
exit 1
|
18
|
-
end
|
16
|
+
router = Jobly::CLI.router
|
17
|
+
exit router.run ARGV
|
data/lib/jobly.rb
CHANGED
@@ -5,8 +5,10 @@ requires 'jobly/polyfills'
|
|
5
5
|
requires 'jobly/extensions'
|
6
6
|
requires 'jobly/refinements'
|
7
7
|
requires 'jobly/job_extensions'
|
8
|
+
requires 'jobly/helpers'
|
9
|
+
|
10
|
+
require 'jobly/helpers'
|
8
11
|
require 'jobly/exceptions'
|
9
|
-
require 'jobly/logging'
|
10
12
|
require 'jobly/log'
|
11
13
|
require 'jobly/sidekiq'
|
12
14
|
require 'jobly/module_functions'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Jobly
|
2
|
+
# This module includes all the modules that are needed for a Jobly::Job
|
3
|
+
# It may also be included by the user, in a non-job context (for example,
|
4
|
+
# in code inside the ./app folder).
|
5
|
+
module Helpers
|
6
|
+
def self.included(klass)
|
7
|
+
klass.class_eval do
|
8
|
+
include Logging
|
9
|
+
include Settings
|
10
|
+
include Shell
|
11
|
+
include Slack
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Note that although these files are in a separate folder, the modules they
|
2
|
+
define are **using the main `Jobly` namespace** - so caution is required
|
3
|
+
when adding additional files.
|
4
|
+
|
5
|
+
This is done on purpose, since these modules may also be included by the
|
6
|
+
user, and we would like the users to have a simple `include Jobly::Slack`
|
7
|
+
rather than `include Jobly::Helpers::Slack`.
|
8
|
+
|
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'sting'
|
2
|
+
|
3
|
+
module Jobly
|
4
|
+
module Settings
|
5
|
+
def settings
|
6
|
+
@settings ||= settings!
|
7
|
+
end
|
8
|
+
|
9
|
+
def settings!
|
10
|
+
settings = Sting.new
|
11
|
+
|
12
|
+
files = [
|
13
|
+
"#{Jobly.full_config_path}/settings",
|
14
|
+
"#{Jobly.full_config_path}/settings.#{Jobly.environment}"
|
15
|
+
]
|
16
|
+
|
17
|
+
files.each do |file|
|
18
|
+
settings << file if File.exist? "#{file}.yml"
|
19
|
+
end
|
20
|
+
|
21
|
+
settings
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'slack-notifier'
|
2
|
+
|
3
|
+
module Jobly
|
4
|
+
module Slack
|
5
|
+
def self.included(base)
|
6
|
+
base.extend ClassMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def slack_channel(channel = nil)
|
11
|
+
if channel
|
12
|
+
@slack_channel = channel
|
13
|
+
else
|
14
|
+
@slack_channel ||= Jobly.slack_channel
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def slack_user(user = nil)
|
19
|
+
if user
|
20
|
+
@slack_user = user
|
21
|
+
else
|
22
|
+
@slack_user ||= Jobly.slack_user
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def slack
|
28
|
+
@slack ||= slack!
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def slack!
|
34
|
+
raise ArgumentError, "Slack webhook is not set" unless Jobly.slack_webhook
|
35
|
+
opts = {
|
36
|
+
channel: self.class.slack_channel,
|
37
|
+
username: self.class.slack_user
|
38
|
+
}
|
39
|
+
::Slack::Notifier.new Jobly.slack_webhook, opts
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
data/lib/jobly/job.rb
CHANGED
@@ -2,12 +2,13 @@ module Jobly
|
|
2
2
|
class Job
|
3
3
|
include Sidekiq::Worker
|
4
4
|
include Sidekiq::Status::Worker
|
5
|
-
include Jobly::Logging # must come after Sidekiq::Worker
|
6
5
|
include JobExtensions::OptionAccessors
|
7
6
|
include JobExtensions::Actions
|
8
7
|
include JobExtensions::Solo
|
9
|
-
|
10
|
-
|
8
|
+
|
9
|
+
# Helpers must come after Sidekiq::Worker since they both bring logger
|
10
|
+
# and our logger is the king of loggers
|
11
|
+
include Helpers
|
11
12
|
|
12
13
|
using KeywordArgs
|
13
14
|
using ToSlug
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class OtherClass
|
2
|
+
# If you have classes that do not inherit from Jobly::Job you can still
|
3
|
+
# gain access to the helpers by including them.
|
4
|
+
|
5
|
+
# Include all helpers
|
6
|
+
include Jobly::Helpers
|
7
|
+
|
8
|
+
# Or, include only what you need
|
9
|
+
# include Jobly::Logging
|
10
|
+
# include Jobly::Slack
|
11
|
+
# include Jobly::Shell
|
12
|
+
# include Jobly::Settings
|
13
|
+
end
|
data/lib/jobly/version.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,49 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jobly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
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-12-
|
11
|
+
date: 2019-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: http
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: pretty_trace
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
34
|
-
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0.5'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: http
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
33
|
+
version: '0.2'
|
34
|
+
- - ">="
|
46
35
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
36
|
+
version: 0.2.3
|
48
37
|
type: :runtime
|
49
38
|
prerelease: false
|
50
39
|
version_requirements: !ruby/object:Gem::Requirement
|
51
40
|
requirements:
|
52
41
|
- - "~>"
|
53
42
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
43
|
+
version: '0.2'
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.2.3
|
55
47
|
- !ruby/object:Gem::Dependency
|
56
48
|
name: puma
|
57
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,34 +156,76 @@ dependencies:
|
|
164
156
|
- - "~>"
|
165
157
|
- !ruby/object:Gem::Version
|
166
158
|
version: '2.0'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: slack-notifier
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - "~>"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '2.3'
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '2.3'
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: sting
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0.3'
|
180
|
+
type: :runtime
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - "~>"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0.3'
|
167
187
|
- !ruby/object:Gem::Dependency
|
168
188
|
name: tty-command
|
169
189
|
requirement: !ruby/object:Gem::Requirement
|
170
190
|
requirements:
|
171
191
|
- - "~>"
|
172
192
|
- !ruby/object:Gem::Version
|
173
|
-
version: '0.
|
193
|
+
version: '0.9'
|
174
194
|
type: :runtime
|
175
195
|
prerelease: false
|
176
196
|
version_requirements: !ruby/object:Gem::Requirement
|
177
197
|
requirements:
|
178
198
|
- - "~>"
|
179
199
|
- !ruby/object:Gem::Version
|
180
|
-
version: '0.
|
200
|
+
version: '0.9'
|
181
201
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
202
|
+
name: colsole
|
183
203
|
requirement: !ruby/object:Gem::Requirement
|
184
204
|
requirements:
|
185
205
|
- - "~>"
|
186
206
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
207
|
+
version: '0.6'
|
188
208
|
type: :runtime
|
189
209
|
prerelease: false
|
190
210
|
version_requirements: !ruby/object:Gem::Requirement
|
191
211
|
requirements:
|
192
212
|
- - "~>"
|
193
213
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
214
|
+
version: '0.6'
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: mister_bin
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - "~>"
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0.7'
|
222
|
+
type: :runtime
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - "~>"
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0.7'
|
195
229
|
description: Execute background jobs and build tasks on this sidekiq-based job server
|
196
230
|
email: db@dannyben.com
|
197
231
|
executables:
|
@@ -215,15 +249,18 @@ files:
|
|
215
249
|
- lib/jobly/config.ru
|
216
250
|
- lib/jobly/exceptions.rb
|
217
251
|
- lib/jobly/extensions/integer.rb
|
252
|
+
- lib/jobly/helpers.rb
|
253
|
+
- lib/jobly/helpers/README.md
|
254
|
+
- lib/jobly/helpers/logging.rb
|
255
|
+
- lib/jobly/helpers/settings.rb
|
256
|
+
- lib/jobly/helpers/shell.rb
|
257
|
+
- lib/jobly/helpers/slack.rb
|
218
258
|
- lib/jobly/job.rb
|
219
259
|
- lib/jobly/job_extensions/actions.rb
|
220
260
|
- lib/jobly/job_extensions/option_accessors.rb
|
221
|
-
- lib/jobly/job_extensions/shell.rb
|
222
|
-
- lib/jobly/job_extensions/slack.rb
|
223
261
|
- lib/jobly/job_extensions/solo.rb
|
224
262
|
- lib/jobly/jobs.rb
|
225
263
|
- lib/jobly/log.rb
|
226
|
-
- lib/jobly/logging.rb
|
227
264
|
- lib/jobly/module_functions.rb
|
228
265
|
- lib/jobly/polyfills/hash.rb
|
229
266
|
- lib/jobly/refinements/argument_converters.rb
|
@@ -235,6 +272,7 @@ files:
|
|
235
272
|
- lib/jobly/templates/full/Gemfile
|
236
273
|
- lib/jobly/templates/full/Procfile
|
237
274
|
- lib/jobly/templates/full/app/job.rb
|
275
|
+
- lib/jobly/templates/full/app/other_class.rb
|
238
276
|
- lib/jobly/templates/full/config/jobly.rb
|
239
277
|
- lib/jobly/templates/full/envrc.example
|
240
278
|
- lib/jobly/templates/full/jobs/hello.rb
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'slack-notifier'
|
2
|
-
|
3
|
-
module Jobly
|
4
|
-
module JobExtensions
|
5
|
-
module Slack
|
6
|
-
def self.included(base)
|
7
|
-
base.extend ClassMethods
|
8
|
-
end
|
9
|
-
|
10
|
-
module ClassMethods
|
11
|
-
def slack_channel(channel = nil)
|
12
|
-
if channel
|
13
|
-
@slack_channel = channel
|
14
|
-
else
|
15
|
-
@slack_channel ||= Jobly.slack_channel
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def slack_user(user = nil)
|
20
|
-
if user
|
21
|
-
@slack_user = user
|
22
|
-
else
|
23
|
-
@slack_user ||= Jobly.slack_user
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def slack
|
29
|
-
@slack ||= slack!
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def slack!
|
35
|
-
raise ArgumentError, "Slack webhook is not set" unless Jobly.slack_webhook
|
36
|
-
opts = {
|
37
|
-
channel: self.class.slack_channel,
|
38
|
-
username: self.class.slack_user
|
39
|
-
}
|
40
|
-
::Slack::Notifier.new Jobly.slack_webhook, opts
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|