delayed_job_logging 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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