job_enqueue_logger 0.1.0 → 0.3.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.
- 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).
|