job_enqueue_logger 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -1
- data/README.md +8 -4
- data/lib/job_enqueue_logger/delayed_job_adapter.rb +2 -2
- data/lib/job_enqueue_logger/que_adapter.rb +70 -0
- data/lib/job_enqueue_logger/railtie.rb +1 -0
- data/lib/job_enqueue_logger/resque_adapter.rb +2 -2
- data/lib/job_enqueue_logger/sidekiq_adapter.rb +2 -2
- data/lib/job_enqueue_logger/sucker_punch_adapter.rb +36 -0
- data/lib/job_enqueue_logger/utils.rb +11 -1
- data/lib/job_enqueue_logger/version.rb +1 -1
- data/lib/job_enqueue_logger.rb +3 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dea7d0e16e19e83d6a41a6ac12dfb637670b6c2767ffd859a65c33eb1fe6fb1b
|
4
|
+
data.tar.gz: 44da64bbfc0bcc1984dff1bb971768d0ebec961e4eefba46b9223c38115f6376
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b20c92834369550756fe71f0f27c76dca198fe267fad432765740bbcf3a1ed034e89aa126fb2acf6e76978f632813241176af77a7d139762ffd4d7ba9f4c2e5
|
7
|
+
data.tar.gz: e5ef769550740936181d7fa72b78bc6c132542095e0bb66f7c4973bf90298bc6ffed1d168e4aa553f4b60ae8266fc8221dbfa611fc02c1855ffa48a110157592
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
## master (unreleased)
|
2
2
|
|
3
|
-
## 0.
|
3
|
+
## 0.3.0 (2023-11-09)
|
4
|
+
|
5
|
+
- Truncate long string arguments in log output
|
6
|
+
- Add ability to set logger
|
7
|
+
- Prefix this gem log lines with `[JobEnqueueLogger]`
|
8
|
+
|
9
|
+
## 0.2.0 (2023-04-04)
|
10
|
+
|
11
|
+
- Support `que`
|
12
|
+
- Support `sucker_punch`
|
13
|
+
|
14
|
+
## 0.1.0 (2023-03-30)
|
4
15
|
|
5
16
|
- First release
|
data/README.md
CHANGED
@@ -11,13 +11,13 @@ This is very much a development and debugging tool; it is not recommended to use
|
|
11
11
|
When the job is enqueued within the guts of the application, the log line is generated:
|
12
12
|
|
13
13
|
```
|
14
|
-
Enqueued AvatarThumbnailsJob (jid=578b3d10fc5403f97ee0a8e1) to Sidekiq(default) with arguments: 1092412064
|
14
|
+
[JobEnqueueLogger] Enqueued AvatarThumbnailsJob (jid=578b3d10fc5403f97ee0a8e1) to Sidekiq(default) with arguments: 1092412064
|
15
15
|
```
|
16
16
|
|
17
17
|
Or with backtraces enabled:
|
18
18
|
|
19
19
|
```
|
20
|
-
Enqueued AvatarThumbnailsJob (jid=578b3d10fc5403f97ee0a8e1) to Sidekiq(default) with arguments: 1092412064
|
20
|
+
[JobEnqueueLogger] Enqueued AvatarThumbnailsJob (jid=578b3d10fc5403f97ee0a8e1) to Sidekiq(default) with arguments: 1092412064
|
21
21
|
↳ app/models/user.rb:421:in `generate_avatar_thumbnails'
|
22
22
|
app/services/user_creator.rb:21:in `call'
|
23
23
|
app/controllers/users_controller.rb:49:in `create'
|
@@ -32,6 +32,8 @@ This gem supports most common job queuing backends:
|
|
32
32
|
* [Sidekiq](https://github.com/sidekiq/sidekiq) >= 6.5.0
|
33
33
|
* [Resque](https://github.com/resque/resque) >= 2.0.0
|
34
34
|
* [DelayedJob](https://github.com/collectiveidea/delayed_job) >= 4.1.5
|
35
|
+
* [SuckerPunch](https://github.com/brandonhilkert/sucker_punch) >= 3.0.0
|
36
|
+
* [Que](https://github.com/que-rb/que) >= 2.0.0
|
35
37
|
|
36
38
|
If you need support for older rubies or older versions of queuing backends (or additional backends), [open an issue](https://github.com/fatkodima/job_enqueue_logger/issues/new).
|
37
39
|
|
@@ -69,13 +71,15 @@ JobEnqueueLogger.configure do |config|
|
|
69
71
|
# Controls whether to print backtraces. Set to `true` to print backtraces, or
|
70
72
|
# a number to limit how many lines to print.
|
71
73
|
config.backtrace = false
|
74
|
+
|
75
|
+
# The logger to log to.
|
76
|
+
# Is set to Rails.logger by default, when the gem is used in the Rails app.
|
77
|
+
config.logger = nil
|
72
78
|
end
|
73
79
|
```
|
74
80
|
|
75
81
|
## Development
|
76
82
|
|
77
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
78
|
-
|
79
83
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
80
84
|
|
81
85
|
## Contributing
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JobEnqueueLogger
|
4
|
+
module QueAdapter
|
5
|
+
module Job
|
6
|
+
def enqueue(*)
|
7
|
+
job = super
|
8
|
+
unless Thread.current[:que_jobs_to_bulk_insert]
|
9
|
+
job_attrs = job.que_attrs
|
10
|
+
job_class = job_attrs[:job_class]
|
11
|
+
args = job_attrs[:args]
|
12
|
+
args << job_attrs[:kwargs] unless job_attrs[:kwargs].empty?
|
13
|
+
|
14
|
+
if (id = job_attrs[:id])
|
15
|
+
message = "Enqueued #{job_class} (id=#{id}) to Que(#{job_attrs[:queue]})"
|
16
|
+
|
17
|
+
run_at = job_attrs[:run_at].utc
|
18
|
+
message += " at #{run_at}" if run_at > Time.now.utc
|
19
|
+
message += Utils.args_info(args)
|
20
|
+
else
|
21
|
+
# Job performed inline.
|
22
|
+
message = "Performed inline #{job_class}" + Utils.args_info(args)
|
23
|
+
end
|
24
|
+
Utils.log_job_enqueue(QueAdapter.logger, message)
|
25
|
+
end
|
26
|
+
job
|
27
|
+
end
|
28
|
+
ruby2_keywords(:enqueue)
|
29
|
+
|
30
|
+
def bulk_enqueue(**)
|
31
|
+
jobs = super
|
32
|
+
if jobs.any?
|
33
|
+
job_attrs = jobs.first.que_attrs
|
34
|
+
job_class = job_attrs[:job_class]
|
35
|
+
|
36
|
+
if job_attrs[:id]
|
37
|
+
run_at = job_attrs[:run_at].utc
|
38
|
+
|
39
|
+
message = "Enqueued"
|
40
|
+
message += " #{jobs.size}" if jobs.size > 1
|
41
|
+
message += " #{job_class} to Que(#{job_attrs[:queue]})"
|
42
|
+
message += " at #{run_at}" if run_at > Time.now.utc
|
43
|
+
else
|
44
|
+
message = "Performed inline"
|
45
|
+
message += " #{jobs.size}" if jobs.size > 1
|
46
|
+
message += " #{job_class}"
|
47
|
+
end
|
48
|
+
|
49
|
+
Utils.log_job_enqueue(QueAdapter.logger, message)
|
50
|
+
end
|
51
|
+
jobs
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.logger
|
56
|
+
# Que.server? is defined in the newest version of Que - https://github.com/que-rb/que/pull/382
|
57
|
+
is_server = defined?(Que::CommandLineInterface)
|
58
|
+
|
59
|
+
if !is_server && JobEnqueueLogger.logger
|
60
|
+
JobEnqueueLogger.logger
|
61
|
+
elsif Que.logger.respond_to?(:call)
|
62
|
+
Que.logger.call
|
63
|
+
else
|
64
|
+
Que.logger
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
Que::Job.singleton_class.prepend(JobEnqueueLogger::QueAdapter::Job)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JobEnqueueLogger
|
4
|
+
# There is no easy way to detect if the job is performed inline,
|
5
|
+
# so extend only enqueuing methods.
|
6
|
+
module SuckerPunchAdapter
|
7
|
+
module Job
|
8
|
+
def perform_async(*args)
|
9
|
+
enqueued = super
|
10
|
+
if enqueued
|
11
|
+
message = "Enqueued #{name} to SuckerPunch" + Utils.args_info(args)
|
12
|
+
Utils.log_job_enqueue(SuckerPunchAdapter.logger, message)
|
13
|
+
end
|
14
|
+
enqueued
|
15
|
+
end
|
16
|
+
ruby2_keywords(:perform_async)
|
17
|
+
|
18
|
+
def perform_in(interval, *args)
|
19
|
+
enqueued = super
|
20
|
+
if enqueued
|
21
|
+
at = (Time.now + interval).utc
|
22
|
+
message = "Enqueued #{name} to SuckerPunch in #{interval} seconds (at #{at})" + Utils.args_info(args)
|
23
|
+
Utils.log_job_enqueue(SuckerPunchAdapter.logger, message)
|
24
|
+
end
|
25
|
+
enqueued
|
26
|
+
end
|
27
|
+
ruby2_keywords(:perform_in)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.logger
|
31
|
+
JobEnqueueLogger.logger || SuckerPunch.logger
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
SuckerPunch::Job::ClassMethods.prepend(JobEnqueueLogger::SuckerPunchAdapter::Job)
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module JobEnqueueLogger
|
4
4
|
module Utils
|
5
5
|
def self.log_job_enqueue(logger, message)
|
6
|
+
message = "[JobEnqueueLogger] #{message}"
|
6
7
|
return logger.info(message) unless JobEnqueueLogger.backtrace
|
7
8
|
|
8
9
|
backtrace = caller
|
@@ -19,10 +20,19 @@ module JobEnqueueLogger
|
|
19
20
|
|
20
21
|
def self.args_info(args)
|
21
22
|
if Array(args).any?
|
22
|
-
" with arguments: #{Array(args).map(
|
23
|
+
" with arguments: #{Array(args).map { |arg| format_arg(arg).inspect }.join(', ')}"
|
23
24
|
else
|
24
25
|
""
|
25
26
|
end
|
26
27
|
end
|
28
|
+
|
29
|
+
def self.format_arg(arg)
|
30
|
+
case arg
|
31
|
+
when String
|
32
|
+
arg.size > 100 ? "#{arg[0, 100]}…" : arg
|
33
|
+
else
|
34
|
+
arg
|
35
|
+
end
|
36
|
+
end
|
27
37
|
end
|
28
38
|
end
|
data/lib/job_enqueue_logger.rb
CHANGED
@@ -16,7 +16,7 @@ module JobEnqueueLogger
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
attr_accessor :backtrace
|
19
|
+
attr_accessor :backtrace, :logger
|
20
20
|
|
21
21
|
def configure
|
22
22
|
yield self
|
@@ -30,4 +30,6 @@ end
|
|
30
30
|
require_relative "job_enqueue_logger/sidekiq_adapter" if defined?(Sidekiq)
|
31
31
|
require_relative "job_enqueue_logger/resque_adapter" if defined?(Resque)
|
32
32
|
require_relative "job_enqueue_logger/delayed_job_adapter" if defined?(Delayed::Job)
|
33
|
+
require_relative "job_enqueue_logger/sucker_punch_adapter" if defined?(SuckerPunch)
|
34
|
+
require_relative "job_enqueue_logger/que_adapter" if defined?(Que)
|
33
35
|
require_relative "job_enqueue_logger/railtie" if defined?(Rails)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: job_enqueue_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fatkodima
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |-
|
14
14
|
Log background jobs enqueued by your application (additionally with backtraces).
|
@@ -25,9 +25,11 @@ files:
|
|
25
25
|
- README.md
|
26
26
|
- lib/job_enqueue_logger.rb
|
27
27
|
- lib/job_enqueue_logger/delayed_job_adapter.rb
|
28
|
+
- lib/job_enqueue_logger/que_adapter.rb
|
28
29
|
- lib/job_enqueue_logger/railtie.rb
|
29
30
|
- lib/job_enqueue_logger/resque_adapter.rb
|
30
31
|
- lib/job_enqueue_logger/sidekiq_adapter.rb
|
32
|
+
- lib/job_enqueue_logger/sucker_punch_adapter.rb
|
31
33
|
- lib/job_enqueue_logger/utils.rb
|
32
34
|
- lib/job_enqueue_logger/version.rb
|
33
35
|
homepage: https://github.com/fatkodima/job_enqueue_logger
|
@@ -52,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
54
|
- !ruby/object:Gem::Version
|
53
55
|
version: '0'
|
54
56
|
requirements: []
|
55
|
-
rubygems_version: 3.4.
|
57
|
+
rubygems_version: 3.4.10
|
56
58
|
signing_key:
|
57
59
|
specification_version: 4
|
58
60
|
summary: Log background jobs enqueued by your application (additionally with backtraces).
|