err 0 → 0.0.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: 62dbf0caf18619f5a9f80231f4d0c48a8fb6964b
4
- data.tar.gz: cc174ecb465d805cd2deacb21fbeeaa855fc15cd
3
+ metadata.gz: 07affa7e7938f1ac3388a2bf05a7aa62de6ccc78
4
+ data.tar.gz: c3197404a39f79fcb7a3bf617bc7336f41074193
5
5
  SHA512:
6
- metadata.gz: 6d85540f9a0a34c400f5a8c50a458481df5cad6535bb11256c14f9268b5c98ffcc0ad61c8e5df19a317c8b564c5910c7188e8bfd2bc9e815af8c108e152b90f0
7
- data.tar.gz: 730a2866846457427d0878608a2c056639cf47aa3c5c47f50b784e402788ffed60f72a45d8a40ca79e4bde57e069d943590f08c4b425fff6ccb62b5db4a824d7
6
+ metadata.gz: d562d4917ee2b3d23feb9c395bff1143a33acc25308be38979f3e043ff8d124dcaf029700dca1cf7e06aa18459eb0870189ce11ce0ea9c153eeb01d38230a12f
7
+ data.tar.gz: 1666098f7ac9ae2dd0cfe9ede947fc3e18fc60e2b4141a5bf60c03a6e68b239c31de5e2ccd0b70020a00e4ae2d1e36706c4fc2f24b48c9b3c0ca1219ea2b850c
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.0
4
+ - 2.0.0
5
+ - 1.9.3
6
+ notifications:
7
+ email: false
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## Version 0.0.1
4
+
5
+ * Initial release
data/README.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Err
2
2
 
3
- TODO: Write a gem description
3
+ Err helps you try out and use different error notification gems without the hassle of individual setup.
4
+ It adds a simple API that you can use to set up all your notification gems in one place.
5
+
6
+ Err works with or without Rails.
7
+
8
+ **Supported services:** [Airbrake](https://github.com/airbrake/airbrake), [Honeybadger](https://github.com/honeybadger-io/honeybadger-ruby) and [Opbeat](https://github.com/opbeat/opbeat_ruby).
9
+ If you use a service that isn't listed here, please [add it](#contributing) so others can use it too. Thanks :heart:
4
10
 
5
11
  ## Installation
6
12
 
@@ -12,18 +18,91 @@ And then execute:
12
18
 
13
19
  $ bundle
14
20
 
15
- Or install it yourself as:
21
+ ## Usage
22
+
23
+ To use a service, just add its Ruby gem to your *Gemfile* and set it up as shown below.
16
24
 
17
- $ gem install err
25
+ Example configuration, in an initializer, e.g. *config/initializers/err.rb*:
18
26
 
19
- ## Usage
27
+ ```ruby
28
+ Err.configure do |config|
29
+ # Set up shared configuration
30
+ config.environments = %w{ staging production }
31
+ config.ignore << "Some::Exception"
32
+
33
+ # Set up Airbrake
34
+ config.airbrake do |config|
35
+ config.api_key = 'some key'
36
+ end
37
+
38
+ # Set up Honeybadger
39
+ config.honeybadger do |config|
40
+ config.api_key = 'some key'
41
+ end
42
+
43
+ # Set up Opbeat
44
+ config.opbeat do |config|
45
+ config.organization_id = 'some organization id'
46
+ config.app_id = 'some app id'
47
+ config.secret_token = 'some secret token'
48
+ end
49
+ end
50
+ ```
51
+
52
+ If you prefer to have the individual services set up in different initializers, you can do the following:
53
+
54
+ ```ruby
55
+ Err.configure :airbrake do |config|
56
+ config.api_key = 'some key'
57
+ end
58
+ ```
59
+
60
+ If you don't use Rails, you can do this anywhere in your application setup, as long as the service gems are loaded in advance.
61
+
62
+ To remove a service, just remove its Ruby gem from the *Gemfile*. You can leave the config if you wish, so you can use it at a later time. It won't get called if the service's Ruby gem isn't available.
20
63
 
21
- TODO: Write usage instructions here
64
+ ## Defaults
65
+
66
+ Err sets up some defaults that makes it easy to try out new services without the common setup.
67
+
68
+ #### Ignored exceptions by default
69
+
70
+ #### Default notification environments
71
+
72
+ ## Manually tracking exceptions
73
+
74
+ The various error notification gems will track errors automatically. In addition, Err adds a simple API for tracking exceptions and messages manually.
75
+
76
+ #### Sending an exception
77
+
78
+ The following will send an exception to all available services:
79
+
80
+ ```ruby
81
+ begin
82
+ # Some failing code
83
+ rescue => e
84
+ Err.notify e, some_param: "Some value"
85
+ end
86
+ ```
87
+
88
+ #### Sending a message
89
+
90
+ You can send a message manually that isn't an actual exception to all services:
91
+
92
+ ```ruby
93
+ Err.message "Something went wrong", this_is: "A param"
94
+ ```
22
95
 
23
96
  ## Contributing
24
97
 
25
- 1. Fork it ( https://github.com/[my-github-username]/err/fork )
98
+ You are very welcome to add new error notification services so others can use them too.
99
+ See the [existing services](https://github.com/lassebunk/err/tree/master/lib/err/services) to see how this is done.
100
+
101
+ 1. Fork the project
26
102
  2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create a new Pull Request
103
+ 3. Make your changes
104
+ 4. Add tests so others don't break it unintentionally
105
+ 5. Run tests (`rake`)
106
+ 6. Commit your changes (`git commit -am 'Add feature'`)
107
+ 7. Push to the branch (`git push origin my-new-feature`)
108
+ 8. Create a new pull request
data/Rakefile CHANGED
@@ -1,2 +1,17 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
2
3
 
4
+ Rake::TestTask.new do |t|
5
+ t.libs << "test"
6
+ t.test_files = FileList["test/**/*_test.rb"]
7
+ t.verbose = true
8
+ end
9
+
10
+ task :console do
11
+ require "irb"
12
+ require "err"
13
+ ARGV.clear
14
+ IRB.start
15
+ end
16
+
17
+ task :default => :test
data/err.gemspec CHANGED
@@ -20,8 +20,11 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_development_dependency "bundler", "~> 1.6"
22
22
  s.add_development_dependency "rake"
23
+ s.add_development_dependency "mocha", "~> 1.1"
24
+ s.add_development_dependency "minitest"
23
25
 
24
26
  # Services
25
27
  s.add_development_dependency "airbrake"
28
+ s.add_development_dependency "honeybadger"
26
29
  s.add_development_dependency "opbeat"
27
30
  end
@@ -0,0 +1,38 @@
1
+ module Err
2
+ module Configuration
3
+ DEFAULT_DEVELOPMENT_ENVIRONMENTS = %w{ development test cucumber }
4
+ DEFAULT_IGNORE = %w{
5
+ ActiveRecord::RecordNotFound,
6
+ ActionController::RoutingError,
7
+ ActionController::InvalidAuthenticityToken,
8
+ CGI::Session::CookieStore::TamperedWithCookie,
9
+ ActionController::UnknownHttpMethod,
10
+ ActionController::UnknownAction,
11
+ AbstractController::ActionNotFound,
12
+ Mongoid::Errors::DocumentNotFound,
13
+ ActionController::UnknownFormat
14
+ }
15
+
16
+ class << self
17
+ def development_environments
18
+ @development_environments ||= DEFAULT_DEVELOPMENT_ENVIRONMENTS.dup
19
+ end
20
+
21
+ attr_writer :development_environments
22
+
23
+ def ignore
24
+ @ignore ||= DEFAULT_IGNORE.dup
25
+ end
26
+
27
+ attr_writer :ignore
28
+
29
+ def method_missing(method, *args, &block)
30
+ if service = Err.find_service_by_key(method)
31
+ service.configure(&block) if service.enabled?
32
+ else
33
+ super
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,24 +1,40 @@
1
1
  module Err
2
2
  class Airbrake < Service
3
3
  class << self
4
- def enabled?
4
+ def available?
5
5
  defined?(::Airbrake)
6
6
  end
7
7
 
8
- def environments=(envs)
9
- Airbrake.development_environments -= envs.map(&:to_s)
8
+ def configure(&block)
9
+ return unless enabled?
10
+ airbrake.configure(&block)
10
11
  end
11
12
 
12
- def ignored=(exception_names)
13
- Airbrake.ignore << *exception_names
13
+ def development_environments=(envs)
14
+ config.development_environments = envs.map(&:to_s)
14
15
  end
15
16
 
16
- def notify(exception)
17
- Airbrake.notify(exception)
17
+ def ignore=(exception_names)
18
+ config.ignore.clear
19
+ config.ignore.concat exception_names
18
20
  end
19
21
 
20
- def message(msg)
21
- Airbrake.notify(message)
22
+ def notify(exception, params = {})
23
+ airbrake.notify_or_ignore(exception, parameters: params)
24
+ end
25
+
26
+ def message(msg, params = {})
27
+ airbrake.notify(msg, parameters: params)
28
+ end
29
+
30
+ private
31
+
32
+ def airbrake
33
+ ::Airbrake
34
+ end
35
+
36
+ def config
37
+ airbrake.configuration
22
38
  end
23
39
  end
24
40
  end
@@ -0,0 +1,41 @@
1
+ module Err
2
+ class Honeybadger < Service
3
+ class << self
4
+ def available?
5
+ defined?(::Honeybadger)
6
+ end
7
+
8
+ def configure(&block)
9
+ return unless enabled?
10
+ honeybadger.configure(&block)
11
+ end
12
+
13
+ def development_environments=(envs)
14
+ config.development_environments = envs.map(&:to_s)
15
+ end
16
+
17
+ def ignore=(exception_names)
18
+ config.ignore.clear
19
+ config.ignore.concat exception_names
20
+ end
21
+
22
+ def notify(exception, params = {})
23
+ honeybadger.notify_or_ignore(exception, parameters: params)
24
+ end
25
+
26
+ def message(msg, params = {})
27
+ honeybadger.notify(msg, parameters: params)
28
+ end
29
+
30
+ private
31
+
32
+ def honeybadger
33
+ ::Honeybadger
34
+ end
35
+
36
+ def config
37
+ honeybadger.configuration
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,46 @@
1
+ module Err
2
+ class Opbeat < Service
3
+ class << self
4
+ def available?
5
+ defined?(::Opbeat)
6
+ end
7
+
8
+ def configure(&block)
9
+ return unless enabled?
10
+ opbeat.configure(&block)
11
+ end
12
+
13
+ def development_environments=(envs)
14
+ config.environments = [config.current_environment] - envs.map(&:to_s)
15
+ end
16
+
17
+ def ignore=(exception_names)
18
+ config.excluded_exceptions = exception_names
19
+ end
20
+
21
+ def notify(exception, params = {})
22
+ opbeat.captureException(exception)
23
+ end
24
+
25
+ def message(msg, params = {})
26
+ msg = msg.dup
27
+ msg << " (#{params_string(params)})" if params.any?
28
+ opbeat.captureMessage(msg)
29
+ end
30
+
31
+ private
32
+
33
+ def params_string(params)
34
+ params.map { |k, v| "#{k}: #{v}" }.join(", ")
35
+ end
36
+
37
+ def opbeat
38
+ ::Opbeat
39
+ end
40
+
41
+ def config
42
+ opbeat.configuration
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,37 @@
1
+ module Err
2
+ class Service
3
+ class << self
4
+ def key
5
+ @key ||= name.split("::").last.gsub(/^./, &:downcase).gsub(/[A-Z]/) { |s| "_#{s.downcase}" }
6
+ end
7
+
8
+ def available?
9
+ raise NotImplementedError
10
+ end
11
+
12
+ def enabled?
13
+ available?
14
+ end
15
+
16
+ def configure(&block)
17
+ raise NotImplementedError
18
+ end
19
+
20
+ def development_environments=(envs)
21
+ raise NotImplementedError
22
+ end
23
+
24
+ def ignore=(exception_names)
25
+ raise NotImplementedError
26
+ end
27
+
28
+ def notify(exception, params = {})
29
+ raise NotImplementedError
30
+ end
31
+
32
+ def message(msg, params = {})
33
+ raise NotImplementedError
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ require "err/services/service"
2
+
3
+ Dir["#{File.dirname(__FILE__)}/services/*.rb"].each { |f| require f }
data/lib/err/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Err
2
- VERSION = "0"
2
+ VERSION = "0.0.1"
3
3
  end
data/lib/err.rb CHANGED
@@ -1,16 +1,58 @@
1
1
  %w{
2
2
  version
3
- service
3
+ configuration
4
+ services
4
5
  }.each { |f| require "err/#{f}" }
5
6
 
6
7
  module Err
7
8
  class << self
9
+ def configure(service_key = nil, &block)
10
+ if service_key
11
+ service = find_service_by_key(service_key)
12
+ raise "Service #{service_key.inspect} not found" unless service
13
+ service.configure(&block) if service.enabled?
14
+ else
15
+ yield config
16
+ end
17
+ setup!
18
+ end
19
+
20
+ def notify(exception, params = {})
21
+ call_each_service :notify, exception, params
22
+ end
23
+
24
+ def message(msg, params = {})
25
+ call_each_service :message, msg, params
26
+ end
27
+
8
28
  def setup!
9
- return if @set_up
10
- @set_up = true
29
+ [:development_environments, :ignore].each do |method|
30
+ call_each_service "#{method}=", config.send(method)
31
+ end
11
32
  end
12
33
 
13
34
  def services
35
+ @services ||= ObjectSpace.each_object(Class).select { |klass| klass < Err::Service }
36
+ end
37
+
38
+ def enabled_services
39
+ services.select(&:enabled?)
40
+ end
41
+
42
+ def find_service_by_key(key)
43
+ services.find { |s| s.key == key.to_s }
44
+ end
45
+
46
+ private
47
+
48
+ def config
49
+ Configuration
50
+ end
51
+
52
+ def call_each_service(method, *args)
53
+ enabled_services.each do |s|
54
+ s.send method, *args
55
+ end
14
56
  end
15
57
  end
16
58
  end
data/test/err_test.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "test_helper"
2
+
3
+ class ErrTest < Minitest::Test
4
+ end
@@ -0,0 +1,56 @@
1
+ require "test_helper"
2
+
3
+ class AirbrakeTest < Minitest::Test
4
+ def test_key
5
+ assert_equal "airbrake", Err::Airbrake.key
6
+ end
7
+
8
+ def test_enabled
9
+ assert Err::Airbrake.enabled?
10
+ end
11
+
12
+ def test_configure
13
+ Err.configure do |config|
14
+ config.airbrake do |config|
15
+ config.api_key = "123"
16
+ end
17
+ end
18
+ assert_equal "123", Airbrake.configuration.api_key
19
+ end
20
+
21
+ def test_configure_separate
22
+ Err.configure :airbrake do |config|
23
+ config.api_key = "456"
24
+ end
25
+ assert_equal "456", Airbrake.configuration.api_key
26
+ end
27
+
28
+ def test_configure_development_environments
29
+ Err.configure do |config|
30
+ config.development_environments = %w{development staging}
31
+ end
32
+ assert Airbrake.configuration.development_environments.include?("staging")
33
+ end
34
+
35
+ def test_configure_ignore
36
+ Err.configure do |config|
37
+ config.ignore = %w{
38
+ ActiveRecord::RecordNotFound
39
+ ActionController::RoutingError
40
+ }
41
+ end
42
+
43
+ assert_equal %w{ ActiveRecord::RecordNotFound ActionController::RoutingError },
44
+ Airbrake.configuration.ignore
45
+ end
46
+
47
+ def test_notify
48
+ Airbrake.expects(:notify_or_ignore).once
49
+ Err::Airbrake.notify RuntimeError.new
50
+ end
51
+
52
+ def test_message
53
+ Airbrake.expects(:notify).once
54
+ Err::Airbrake.message "This is a test", one: "First", two: "Second"
55
+ end
56
+ end
@@ -0,0 +1,56 @@
1
+ require "test_helper"
2
+
3
+ class HoneybadgerTest < Minitest::Test
4
+ def test_key
5
+ assert_equal "honeybadger", Err::Honeybadger.key
6
+ end
7
+
8
+ def test_enabled
9
+ assert Err::Honeybadger.enabled?
10
+ end
11
+
12
+ def test_configure
13
+ Err.configure do |config|
14
+ config.honeybadger do |config|
15
+ config.api_key = "123"
16
+ end
17
+ end
18
+ assert_equal "123", Honeybadger.configuration.api_key
19
+ end
20
+
21
+ def test_configure_separate
22
+ Err.configure :honeybadger do |config|
23
+ config.api_key = "456"
24
+ end
25
+ assert_equal "456", Honeybadger.configuration.api_key
26
+ end
27
+
28
+ def test_configure_development_environments
29
+ Err.configure do |config|
30
+ config.development_environments = %w{development staging}
31
+ end
32
+ assert Honeybadger.configuration.development_environments.include?("staging")
33
+ end
34
+
35
+ def test_configure_ignore
36
+ Err.configure do |config|
37
+ config.ignore = %w{
38
+ ActiveRecord::RecordNotFound
39
+ ActionController::RoutingError
40
+ }
41
+ end
42
+
43
+ assert_equal %w{ ActiveRecord::RecordNotFound ActionController::RoutingError },
44
+ Honeybadger.configuration.ignore
45
+ end
46
+
47
+ def test_notify
48
+ Honeybadger.expects(:notify_or_ignore).once
49
+ Err::Honeybadger.notify RuntimeError.new
50
+ end
51
+
52
+ def test_message
53
+ Honeybadger.expects(:notify).once
54
+ Err::Honeybadger.message "This is a test", one: "First", two: "Second"
55
+ end
56
+ end
@@ -0,0 +1,56 @@
1
+ require "test_helper"
2
+
3
+ class OpbeatTest < Minitest::Test
4
+ def test_key
5
+ assert_equal "opbeat", Err::Opbeat.key
6
+ end
7
+
8
+ def test_enabled
9
+ assert Err::Opbeat.enabled?
10
+ end
11
+
12
+ def test_configure
13
+ Err.configure do |config|
14
+ config.opbeat do |config|
15
+ config.organization_id = "123"
16
+ end
17
+ end
18
+ assert_equal "123", Opbeat.configuration.organization_id
19
+ end
20
+
21
+ def test_configure_separate
22
+ Err.configure :opbeat do |config|
23
+ config.organization_id = "456"
24
+ end
25
+ assert_equal "456", Opbeat.configuration.organization_id
26
+ end
27
+
28
+ def test_configure_development_environments
29
+ Err.configure do |config|
30
+ config.development_environments = %w{development production}
31
+ end
32
+ assert !Opbeat.configuration.environments.include?("production")
33
+ end
34
+
35
+ def test_configure_ignore
36
+ Err.configure do |config|
37
+ config.ignore = %w{
38
+ ActiveRecord::RecordNotFound
39
+ ActionController::RoutingError
40
+ }
41
+ end
42
+
43
+ assert_equal %w{ ActiveRecord::RecordNotFound ActionController::RoutingError },
44
+ Opbeat.configuration.excluded_exceptions
45
+ end
46
+
47
+ def test_notify
48
+ Opbeat.expects(:captureException).once
49
+ Err::Opbeat.notify RuntimeError.new
50
+ end
51
+
52
+ def test_message
53
+ Opbeat.expects(:captureMessage).once
54
+ Err::Opbeat.message "This is a test", one: "First", two: "Second"
55
+ end
56
+ end
@@ -0,0 +1,12 @@
1
+ require "minitest/autorun"
2
+ require "mocha/test_unit"
3
+
4
+ require "err"
5
+
6
+ %w{
7
+ airbrake
8
+ honeybadger
9
+ opbeat
10
+ }.each do |service|
11
+ require service
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: err
3
3
  version: !ruby/object:Gem::Version
4
- version: '0'
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lasse Bunk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-02 00:00:00.000000000 Z
11
+ date: 2014-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mocha
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: airbrake
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +80,20 @@ dependencies:
52
80
  - - ">="
53
81
  - !ruby/object:Gem::Version
54
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: honeybadger
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: opbeat
57
99
  requirement: !ruby/object:Gem::Requirement
@@ -75,15 +117,26 @@ extensions: []
75
117
  extra_rdoc_files: []
76
118
  files:
77
119
  - ".gitignore"
120
+ - ".travis.yml"
121
+ - CHANGELOG.md
78
122
  - Gemfile
79
123
  - LICENSE.txt
80
124
  - README.md
81
125
  - Rakefile
82
126
  - err.gemspec
83
127
  - lib/err.rb
84
- - lib/err/service.rb
128
+ - lib/err/configuration.rb
129
+ - lib/err/services.rb
85
130
  - lib/err/services/airbrake.rb
131
+ - lib/err/services/honeybadger.rb
132
+ - lib/err/services/opbeat.rb
133
+ - lib/err/services/service.rb
86
134
  - lib/err/version.rb
135
+ - test/err_test.rb
136
+ - test/services/airbrake_test.rb
137
+ - test/services/honeybadger_test.rb
138
+ - test/services/opbeat_test.rb
139
+ - test/test_helper.rb
87
140
  homepage: https://github.com/lassebunk/err
88
141
  licenses:
89
142
  - MIT
@@ -108,4 +161,9 @@ rubygems_version: 2.2.2
108
161
  signing_key:
109
162
  specification_version: 4
110
163
  summary: Switch out error notification apps like MultiJSON.
111
- test_files: []
164
+ test_files:
165
+ - test/err_test.rb
166
+ - test/services/airbrake_test.rb
167
+ - test/services/honeybadger_test.rb
168
+ - test/services/opbeat_test.rb
169
+ - test/test_helper.rb
data/lib/err/service.rb DELETED
@@ -1,25 +0,0 @@
1
- module Err
2
- class Service
3
- class << self
4
- def enabled?
5
- raise NotImplementedError
6
- end
7
-
8
- def environments=(envs)
9
- raise NotImplementedError
10
- end
11
-
12
- def ignored=(exception_names)
13
- raise NotImplementedError
14
- end
15
-
16
- def notify(exception)
17
- raise NotImplementedError
18
- end
19
-
20
- def message(msg)
21
- raise NotImplementedError
22
- end
23
- end
24
- end
25
- end