delayed_job_logging 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
  SHA1:
3
- metadata.gz: dd96e6eb81feec7de389c48b805710256f0fa86f
4
- data.tar.gz: 38641973c4e317119d6c86ccf71292bb1f8f882f
3
+ metadata.gz: f0d96ad61314b458b123b4c5869ad089eadf5371
4
+ data.tar.gz: 6b24ebb7de1477c9110f04b9bce91fb91f63a83d
5
5
  SHA512:
6
- metadata.gz: fa732da503ecc9dd3379cd7fdbb1454cfadfb9de7017ed4df404407e2e25a928c4cab56c3c99c4589a46a27c2048ab98f991477e8349fae3d63e46e5ad18673e
7
- data.tar.gz: e84427a5dd244a0b113be246bb39b06d39ce8296d4ecc4e4033134070d14e7be04c182b0639259630d81e1450f7fda055896c30209ff123529f24722812e7881
6
+ metadata.gz: 5eb3838c99b633f14e61b4b44d7b7252f3c258a55d71a6fd25308c54ff0271afe17c3515fa1ee4e02276a16cf89ded0c14ada1479f2d98fe1a8b6927c7f314f3
7
+ data.tar.gz: c175c2550ac759cd169fee9b9ae602603992a429f6cd5b4086f33a64f12eda0e7262eabc9fed36925486e90b6df3bf68fc165a6d89a8f06209d90e0f22fdeaec
@@ -0,0 +1,81 @@
1
+ require "delayed_job_logging/version"
2
+
3
+ # Delayed Job Workers including this will log when a job was enqueued, started,
4
+ # succeeded or failed to the Rails logs.
5
+ # It's important to call `super` if they implement these callback methods:
6
+ # `enqueue`, `before`, `success` or `error`
7
+ module DelayedJobLogging
8
+ class << self
9
+ attr_writer :logger
10
+
11
+ def logger
12
+ @logger || Delayed::Job.logger || fail("No logger available!")
13
+ end
14
+ end
15
+
16
+ def enqueue(job)
17
+ LogMessage.new(job).log("enqueued")
18
+ end
19
+
20
+ def before(job)
21
+ LogMessage.new(job).log("started")
22
+ end
23
+
24
+ def success(job)
25
+ LogMessage.new(job).log("succeeded")
26
+ end
27
+
28
+ def error(job, exception)
29
+ LogMessage.new(job).log("failed", exception: exception)
30
+ end
31
+
32
+ class LogMessage
33
+ attr_reader :job
34
+ private :job
35
+
36
+ def initialize(job)
37
+ @job = job
38
+ end
39
+
40
+ def log(status, exception: nil)
41
+ DelayedJobLogging.logger.info(
42
+ ActiveSupport::JSON.encode(
43
+ message_for(status, exception: exception)
44
+ )
45
+ )
46
+ end
47
+
48
+ # The method constructs a hash. Imnsho all alternatives would be inferior to this.
49
+ # rubocop:disable Metrics/MethodLength
50
+ private def message_for(status, exception:)
51
+ {
52
+ job_attempts: job.attempts,
53
+ job_exception: format_exception(exception),
54
+ job_id: job.id,
55
+ job_worker_name: worker.class.name,
56
+ job_arguments: job_arguments,
57
+ job_priority: job.priority,
58
+ job_queue: job.queue,
59
+ job_run_at: (job.run_at || Time.now).iso8601,
60
+ job_status: status
61
+ }
62
+ end # rubocop:enable Metrics/MethodLength
63
+
64
+ private def job_arguments
65
+ worker.instance_variables.inject({}) do |vars, var|
66
+ vars.merge(var => worker.instance_variable_get(var))
67
+ end
68
+ end
69
+
70
+ private def worker
71
+ @_worker ||= YAML.load(job.handler)
72
+ end
73
+
74
+ private def format_exception(exception)
75
+ return unless exception
76
+
77
+ "#{exception.class}: #{exception.message}\n" +
78
+ exception.backtrace.join("\n")
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,3 @@
1
+ module DelayedJobLogging
2
+ VERSION = "0.1.1"
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed_job_logging
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
  - Johannes Barre
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-28 00:00:00.000000000 Z
11
+ date: 2015-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: delayed_job
@@ -128,7 +128,9 @@ email:
128
128
  executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
- files: []
131
+ files:
132
+ - lib/delayed_job_logging.rb
133
+ - lib/delayed_job_logging/version.rb
132
134
  homepage: https://github.com/Savedo/delayed_job_logging
133
135
  licenses:
134
136
  - MIT