delayed-plugins-raven 1.0.4 → 1.0.5

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: 510d9ad154ecf812d69636bf14411ed9371fdd8a
4
- data.tar.gz: 32a8f245505374f8973dd7743df615bf295b8fb7
3
+ metadata.gz: 901fd0dbeed8792f6e15e350f7a662c56bc77129
4
+ data.tar.gz: 67f17fb30f7ab2b19b7ceb03cfefb5b2284eeff2
5
5
  SHA512:
6
- metadata.gz: 568b2b73d59a534bd000ef4a35ddeb29cba537969aa359cae7186e6a841c0f6f514de1f156c47c7d78706426918be88279dec6db1322ed2e824ff7733f7d7ddf
7
- data.tar.gz: 6686dc7b2dcaf92235994cc24a69e912ecb2fd8400a61c9bb863aa4e1f40e45cfb22cec75b6e9f11cd8fd6450d5c788df89c627ea297739178afe053aa74b7f2
6
+ metadata.gz: 3b26fa53e09b79990b83f08fbbbabbcd36b3d144adfcd1b6ca57cfb129674aa2318cfa861aa4fa9eca176ba606e2c6f40e852a1803f50505f6e31b9ecbe46f54
7
+ data.tar.gz: a2ae99f7f86b61d0415622dd9415cd8a4c10169bfa09616bb6df3f4a58e6607d5b9c08cd3e3964b690e69a398c641f9901528a575ba9ea5f88816e1858771732
data/README.md CHANGED
@@ -26,10 +26,19 @@ In a Rails project, this can be done in `config/initializers`.
26
26
  To configure `Delayed::Plugins::Raven` independently from the default Raven configuration, add an initializer to `config/initializers`:
27
27
 
28
28
  require 'delayed-plugins-raven'
29
- Delayed::Plugins::Raven.configure do |config|
29
+ Delayed::Plugins::Raven.configure_raven do |config|
30
30
  config.dsn = ENV["SENTRY_DSN"]
31
31
  config.excluded_exceptions = []
32
32
  ...
33
33
  end
34
34
 
35
35
  If this configuration is omitted, `Raven.capture_exception` will be invoked with the default Raven configuration.
36
+
37
+ Some other aspects of this plugin can be configured with `Delayed::Plugins::Raven.configure_plugin`:
38
+
39
+ Delayed::Plugins::Raven.configure_plugin do |config|
40
+ config.excluded_attributes = ["created_at", "updated_at", "last_error"]
41
+ config.trimmed_attributes = { "last_error" => 20, "handler" => 10 }
42
+ end
43
+
44
+ See `Delayed::Plugins::Raven::Configuration` for default value of the above configurations.
@@ -3,6 +3,7 @@ require 'delayed/performable_method'
3
3
  require 'delayed/plugin'
4
4
 
5
5
  require 'delayed-plugins-raven/version'
6
+ require 'delayed-plugins-raven/configuration'
6
7
 
7
8
  module Delayed::Plugins::Raven
8
9
  class Plugin < ::Delayed::Plugin
@@ -10,8 +11,8 @@ module Delayed::Plugins::Raven
10
11
  def error(job, error)
11
12
  begin
12
13
  ::Raven.capture_exception(error, {
13
- configuration: ::Delayed::Plugins::Raven.configuration,
14
- extra: { delayed_job: job.as_json }
14
+ configuration: ::Delayed::Plugins::Raven.raven_configuration,
15
+ extra: { delayed_job: get_job_json(job) }
15
16
  })
16
17
  rescue Exception => e
17
18
  Rails.logger.error "Raven logging failed: #{e.class.name}: #{e.message}"
@@ -19,6 +20,33 @@ module Delayed::Plugins::Raven
19
20
  end
20
21
  super if defined?(super)
21
22
  end
23
+
24
+ private
25
+
26
+ def get_job_json(job)
27
+ json = job.as_json["job"]
28
+
29
+ if (excluded_attributes = plugin_config.excluded_attributes).present?
30
+ excluded_attributes.each { |attribute| json.delete(attribute) }
31
+ end
32
+
33
+ if (limits = plugin_config.trimmed_attributes).present?
34
+ limits.each do |attribute, limit|
35
+ json[attribute] = trim_lines(json[attribute], limit) if limit > 0
36
+ end
37
+ end
38
+
39
+ json
40
+ end
41
+
42
+ def trim_lines(string, limit)
43
+ return string unless limit
44
+ string.lines.to_a.map(&:strip).slice(0, limit).join("\n") if string.present?
45
+ end
46
+
47
+ def plugin_config
48
+ ::Delayed::Plugins::Raven.plugin_configuration ||= ::Delayed::Plugins::Raven::Configuration.new
49
+ end
22
50
  end
23
51
 
24
52
  callbacks do |lifecycle|
@@ -31,11 +59,23 @@ module Delayed::Plugins::Raven
31
59
  end
32
60
 
33
61
  class << self
34
- attr_accessor :configuration
62
+ attr_accessor :raven_configuration
63
+ attr_accessor :plugin_configuration
64
+
65
+ # Note: Deprecated; Use Delayed::Plugins::Raven.configure_raven instead.
66
+ def configure(&block)
67
+ configure_raven(&block)
68
+ end
69
+
70
+ def configure_raven(&block)
71
+ @raven_configuration = ::Raven::Configuration.new
72
+ block.call(@raven_configuration) if block
73
+ self
74
+ end
35
75
 
36
- def configure
37
- @configuration = ::Raven::Configuration.new
38
- yield(@configuration) if block_given?
76
+ def configure_plugin(&block)
77
+ @plugin_configuration = Delayed::Plugins::Raven::Configuration.new
78
+ block.call(@plugin_configuration) if block
39
79
  self
40
80
  end
41
81
  end
@@ -0,0 +1,16 @@
1
+ module Delayed::Plugins::Raven
2
+ class Configuration
3
+
4
+ # Exclude certain attributes from being serialized into Raven's `extra` field
5
+ attr_accessor :excluded_attributes
6
+
7
+ # Trim specificed attributes to a certain number of lines. Values <= 0 means unlimited.
8
+ attr_accessor :trimmed_attributes
9
+
10
+ def initialize
11
+ self.excluded_attributes = ["last_error"]
12
+ self.trimmed_attributes = { "handler" => -1, "last_error" => 10 }
13
+ end
14
+
15
+ end
16
+ end
@@ -1,7 +1,7 @@
1
1
  module Delayed
2
2
  module Plugins
3
3
  module Raven
4
- VERSION = '1.0.4'
4
+ VERSION = '1.0.5'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed-plugins-raven
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Qiushi He
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-02-21 00:00:00.000000000 Z
13
+ date: 2014-02-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sentry-raven
@@ -83,6 +83,7 @@ files:
83
83
  - Rakefile
84
84
  - delayed-plugins-raven.gemspec
85
85
  - lib/delayed-plugins-raven.rb
86
+ - lib/delayed-plugins-raven/configuration.rb
86
87
  - lib/delayed-plugins-raven/version.rb
87
88
  - resources/looking-for-maintainer.png
88
89
  - spec/lib/delayed-plugins-raven/plugin_spec.rb