opbeat 0.9.1 → 0.9.2
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 +7 -0
- data/.gitignore +5 -0
- data/.rspec +2 -0
- data/.travis.yml +25 -0
- data/Gemfile +2 -0
- data/Makefile +3 -0
- data/README.md +13 -0
- data/Rakefile +19 -0
- data/gemfiles/rails30.gemfile +11 -0
- data/gemfiles/rails31.gemfile +11 -0
- data/gemfiles/rails32.gemfile +11 -0
- data/gemfiles/rails40.gemfile +12 -0
- data/gemfiles/rails41.gemfile +12 -0
- data/gemfiles/ruby192_rails31.gemfile +12 -0
- data/gemfiles/ruby192_rails32.gemfile +12 -0
- data/gemfiles/sidekiq31.gemfile +11 -0
- data/lib/opbeat/better_attr_accessor.rb +44 -0
- data/lib/opbeat/capistrano/capistrano3.rb +7 -19
- data/lib/opbeat/client.rb +5 -5
- data/lib/opbeat/event.rb +3 -3
- data/lib/opbeat/interfaces/exception.rb +3 -3
- data/lib/opbeat/interfaces/http.rb +9 -9
- data/lib/opbeat/interfaces/message.rb +2 -2
- data/lib/opbeat/interfaces/stack_trace.rb +9 -18
- data/lib/opbeat/interfaces.rb +12 -14
- data/lib/opbeat/version.rb +1 -1
- data/opbeat.gemspec +28 -0
- data/spec/opbeat/better_attr_accessor_spec.rb +99 -0
- data/spec/opbeat/client_spec.rb +25 -0
- data/spec/opbeat/configuration_spec.rb +50 -0
- data/spec/opbeat/event_spec.rb +130 -0
- data/spec/opbeat/integrations/delayed_job_spec.rb +38 -0
- data/spec/opbeat/logger_spec.rb +55 -0
- data/spec/opbeat/opbeat_spec.rb +39 -0
- data/spec/opbeat/rack_spec.rb +117 -0
- data/spec/opbeat/sanitizedata_processor_spec.rb +42 -0
- data/spec/spec_helper.rb +10 -0
- metadata +142 -45
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 157acc9610fffbf878154cc1ba1e7312a9b1f77f
|
4
|
+
data.tar.gz: 50476185d45bfafca5ce68cb542e1abb0ffbef7b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5ca3600ea88cae6d689c4a22cd5f25cb56a6a7682d374401b7010066e508201d03eb8d03756af6c2be4023153ccad7e7d50f9ef323ff8647562d8d79b1fdef8c
|
7
|
+
data.tar.gz: 6a689d1070878453e1e4132c4a722177663c15f14c100dd3ee9d5c0c4f9ab5fc80d2fbb06f69bcf8a12d69ec7b5d4149ed0ea979e1cac3bbaa6d06f163809532
|
data/.rspec
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 1.9.2
|
4
|
+
- 1.9.3
|
5
|
+
- 2.0.0
|
6
|
+
- 2.1.1
|
7
|
+
gemfile:
|
8
|
+
- gemfiles/rails30.gemfile
|
9
|
+
- gemfiles/rails31.gemfile
|
10
|
+
- gemfiles/rails32.gemfile
|
11
|
+
matrix:
|
12
|
+
include:
|
13
|
+
- rvm: 1.9.2
|
14
|
+
gemfile: gemfiles/ruby192_rails31.gemfile
|
15
|
+
- rvm: 1.9.2
|
16
|
+
gemfile: gemfiles/ruby192_rails32.gemfile
|
17
|
+
exclude:
|
18
|
+
- rvm: 1.9.2
|
19
|
+
gemfile: gemfiles/rails31.gemfile
|
20
|
+
- rvm: 1.9.2
|
21
|
+
gemfile: gemfiles/rails32.gemfile
|
22
|
+
bundler_args: "--without development"
|
23
|
+
notifications:
|
24
|
+
slack:
|
25
|
+
secure: IniiL3PdFsht2zykTwd/z5Et/L1U6GzsmMC1LrgccKCrvLsdcdlBU3VrAgIb1GT9FPEFpb5sl7FEBN80p6uW15uO57onUawFaSWDhSA3eXG1ImmunVPJ20U4NkJvMbnUdZXQ9XXqOw1ggkR7GrD0PM9Nzr4puWaaGq42UJjdaq0=
|
data/Gemfile
ADDED
data/Makefile
ADDED
data/README.md
CHANGED
@@ -204,6 +204,19 @@ Opbeat.set_context :extra => {:device_id => my_device_id}
|
|
204
204
|
Opbeat.capture_message("Hello world") # will include the context
|
205
205
|
```
|
206
206
|
|
207
|
+
## Timeouts
|
208
|
+
|
209
|
+
Opbeat uses a low default timeout. If you frequently experience timeouts, try increasing it in the following manner:
|
210
|
+
|
211
|
+
```ruby
|
212
|
+
Opbeat.configure do |config|
|
213
|
+
...
|
214
|
+
config.timeout = 5
|
215
|
+
config.open_timeout = 5
|
216
|
+
end
|
217
|
+
```
|
218
|
+
|
219
|
+
|
207
220
|
|
208
221
|
## Testing
|
209
222
|
|
data/Rakefile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rubygems/package_task'
|
3
|
+
|
4
|
+
gemspec = Gem::Specification.load(Dir['*.gemspec'].first)
|
5
|
+
|
6
|
+
Gem::PackageTask.new(gemspec).define
|
7
|
+
|
8
|
+
begin
|
9
|
+
require 'rspec/core/rake_task'
|
10
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
11
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
12
|
+
end
|
13
|
+
rescue LoadError
|
14
|
+
task :spec do
|
15
|
+
abort "Rspec is not available. bundle install to run unit tests"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
task :default => :spec
|
@@ -0,0 +1,12 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "i18n", "~> 0.6.11" # pin to <0.7 to support ruby 1.9.2
|
4
|
+
gem "rails", "~> 3.1.6"
|
5
|
+
gem "rake"
|
6
|
+
gem "rspec"
|
7
|
+
gem "simplecov"
|
8
|
+
gem "delayed_job"
|
9
|
+
gem "sidekiq", "~> 2.17.0"
|
10
|
+
gem "opbeat", :path => "../"
|
11
|
+
|
12
|
+
gemspec :path => "../"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "i18n", "~> 0.6.11" # pin to <0.7 to support ruby 1.9.2
|
4
|
+
gem "rails", "~> 3.2.6"
|
5
|
+
gem "rake"
|
6
|
+
gem "rspec"
|
7
|
+
gem "simplecov"
|
8
|
+
gem "delayed_job"
|
9
|
+
gem "sidekiq", "~> 2.17.0"
|
10
|
+
gem "opbeat", :path => "../"
|
11
|
+
|
12
|
+
gemspec :path => "../"
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
3
|
+
module Opbeat
|
4
|
+
module BetterAttrAccessor
|
5
|
+
|
6
|
+
def attributes
|
7
|
+
Hash[
|
8
|
+
self.class.attributes.map do |attr|
|
9
|
+
[attr, send(attr)]
|
10
|
+
end
|
11
|
+
]
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.included(base)
|
15
|
+
base.extend ClassMethods
|
16
|
+
end
|
17
|
+
|
18
|
+
module ClassMethods
|
19
|
+
def attributes
|
20
|
+
@attributes ||= Set.new
|
21
|
+
|
22
|
+
if superclass.include? BetterAttrAccessor
|
23
|
+
@attributes + superclass.attributes
|
24
|
+
else
|
25
|
+
@attributes
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def attr_accessor(attr, options = {})
|
30
|
+
@attributes ||= Set.new
|
31
|
+
@attributes << attr.to_s
|
32
|
+
|
33
|
+
define_method attr do
|
34
|
+
if instance_variable_defined? "@#{attr}"
|
35
|
+
instance_variable_get "@#{attr}"
|
36
|
+
elsif options.key? :default
|
37
|
+
instance_variable_set "@#{attr}", options[:default].dup
|
38
|
+
end
|
39
|
+
end
|
40
|
+
attr_writer attr
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -8,26 +8,14 @@ namespace :opbeat do
|
|
8
8
|
info "Skipping Opbeat deployment because scm is not git."
|
9
9
|
next
|
10
10
|
end
|
11
|
-
|
12
|
-
within repo_path do
|
13
|
-
rev = fetch(:current_revision)
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
branch = branches[0].sub("* ", "")
|
18
|
-
else
|
19
|
-
branch = nil
|
20
|
-
end
|
21
|
-
|
22
|
-
notify_command = "REV=#{rev} "
|
23
|
-
notify_command << "BRANCH=#{branch} " if branch
|
24
|
-
|
25
|
-
rails_env = fetch(:rails_env, "production")
|
26
|
-
notify_command << "RAILS_ENV=#{rails_env} "
|
12
|
+
rev = fetch(:current_revision)
|
13
|
+
branch = fetch(:branch, 'master')
|
27
14
|
|
28
|
-
|
29
|
-
|
30
|
-
|
15
|
+
within release_path do
|
16
|
+
with rails_env: fetch(:rails_env), rev: rev, branch: branch do
|
17
|
+
capture :rake, 'opbeat:deployment'
|
18
|
+
end
|
31
19
|
end
|
32
20
|
end
|
33
21
|
end
|
@@ -35,4 +23,4 @@ end
|
|
35
23
|
|
36
24
|
namespace :deploy do
|
37
25
|
after :publishing, "opbeat:notify"
|
38
|
-
end
|
26
|
+
end
|
data/lib/opbeat/client.rb
CHANGED
@@ -17,7 +17,7 @@ module Opbeat
|
|
17
17
|
|
18
18
|
def should_try?
|
19
19
|
return true if @status == :online
|
20
|
-
|
20
|
+
|
21
21
|
interval = ([@retry_number, 6].min() ** 2) * @configuration[:backoff_multiplier]
|
22
22
|
return true if Time.now - @last_check > interval
|
23
23
|
|
@@ -40,7 +40,7 @@ module Opbeat
|
|
40
40
|
class Client
|
41
41
|
|
42
42
|
PROTOCOL_VERSION = '1.0'
|
43
|
-
USER_AGENT = "opbeat/#{Opbeat::VERSION}"
|
43
|
+
USER_AGENT = "opbeat-ruby/#{Opbeat::VERSION}"
|
44
44
|
AUTH_HEADER_KEY = 'Authorization'
|
45
45
|
|
46
46
|
attr_accessor :configuration
|
@@ -79,11 +79,11 @@ module Opbeat
|
|
79
79
|
|
80
80
|
def encode(event)
|
81
81
|
event_hash = event.to_hash
|
82
|
-
|
82
|
+
|
83
83
|
@processors.each do |p|
|
84
84
|
event_hash = p.process(event_hash)
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
return MultiJson.encode(event_hash)
|
88
88
|
end
|
89
89
|
|
@@ -95,7 +95,7 @@ module Opbeat
|
|
95
95
|
req.headers[AUTH_HEADER_KEY] = self.generate_auth_header(req.body)
|
96
96
|
req.headers["User-Agent"] = USER_AGENT
|
97
97
|
end
|
98
|
-
|
98
|
+
if !response.status.between?(200, 299)
|
99
99
|
raise Error.new("Error from Opbeat server (#{response.status}): #{response.body}")
|
100
100
|
end
|
101
101
|
rescue
|
data/lib/opbeat/event.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'socket'
|
3
|
-
require 'uuidtools'
|
4
3
|
|
5
4
|
require 'opbeat/error'
|
6
5
|
require 'opbeat/linecache'
|
@@ -28,7 +27,7 @@ module Opbeat
|
|
28
27
|
@configuration = configuration || Opbeat.configuration
|
29
28
|
@interfaces = {}
|
30
29
|
|
31
|
-
@id = options[:id]
|
30
|
+
@id = options[:id]
|
32
31
|
@message = options[:message]
|
33
32
|
@timestamp = options[:timestamp] || Time.now.utc
|
34
33
|
@level = options[:level] || :error
|
@@ -72,12 +71,12 @@ module Opbeat
|
|
72
71
|
|
73
72
|
def to_hash
|
74
73
|
data = {
|
75
|
-
'client_supplied_id' => self.id,
|
76
74
|
'message' => self.message,
|
77
75
|
'timestamp' => self.timestamp,
|
78
76
|
'level' => self.level,
|
79
77
|
'logger' => self.logger,
|
80
78
|
}
|
79
|
+
data['client_supplied_id'] = self.id if self.id
|
81
80
|
data['culprit'] = self.culprit if self.culprit
|
82
81
|
data['machine'] = {'hostname' => self.hostname } if self.hostname
|
83
82
|
data['environment'] = self.environment if self.environment
|
@@ -87,6 +86,7 @@ module Opbeat
|
|
87
86
|
if self.user[:id] or self.user[:email] or self.user[:username]
|
88
87
|
data['user'][:is_authenticated] = true
|
89
88
|
end
|
89
|
+
data['user'][:is_authenticated] = false if !data['user'][:is_authenticated]
|
90
90
|
end
|
91
91
|
@interfaces.each_pair do |name, int_data|
|
92
92
|
data[name] = int_data.to_hash
|
@@ -5,15 +5,15 @@ module Opbeat
|
|
5
5
|
class HttpInterface < Interface
|
6
6
|
|
7
7
|
name 'http'
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
attr_accessor :url
|
9
|
+
attr_accessor :method
|
10
|
+
attr_accessor :data
|
11
|
+
attr_accessor :query_string
|
12
|
+
attr_accessor :cookies
|
13
|
+
attr_accessor :headers
|
14
|
+
attr_accessor :remote_host
|
15
|
+
attr_accessor :http_host
|
16
|
+
attr_accessor :env
|
17
17
|
|
18
18
|
def initialize(*arguments)
|
19
19
|
self.headers = {}
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'hashie'
|
2
|
-
|
3
1
|
require 'opbeat/interfaces'
|
4
2
|
|
5
3
|
module Opbeat
|
@@ -7,7 +5,7 @@ module Opbeat
|
|
7
5
|
class StacktraceInterface < Interface
|
8
6
|
|
9
7
|
name 'stacktrace'
|
10
|
-
|
8
|
+
attr_accessor :frames, :default => []
|
11
9
|
|
12
10
|
def initialize(*arguments)
|
13
11
|
self.frames = []
|
@@ -26,21 +24,14 @@ module Opbeat
|
|
26
24
|
|
27
25
|
# Not actually an interface, but I want to use the same style
|
28
26
|
class Frame < Interface
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
def initialize(*arguments)
|
39
|
-
self.vars= {}
|
40
|
-
self.pre_context = []
|
41
|
-
self.post_context = []
|
42
|
-
super(*arguments)
|
43
|
-
end
|
27
|
+
attr_accessor :abs_path
|
28
|
+
attr_accessor :filename
|
29
|
+
attr_accessor :function
|
30
|
+
attr_accessor :vars, :default => {}
|
31
|
+
attr_accessor :pre_context, :default => []
|
32
|
+
attr_accessor :post_context, :default => []
|
33
|
+
attr_accessor :context_line
|
34
|
+
attr_accessor :lineno
|
44
35
|
|
45
36
|
def to_hash
|
46
37
|
data = super
|
data/lib/opbeat/interfaces.rb
CHANGED
@@ -1,25 +1,23 @@
|
|
1
|
-
require '
|
1
|
+
require 'opbeat/better_attr_accessor'
|
2
2
|
|
3
3
|
module Opbeat
|
4
4
|
|
5
5
|
INTERFACES = {}
|
6
6
|
|
7
|
-
class Interface
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
class Interface
|
8
|
+
include BetterAttrAccessor
|
9
|
+
alias_method :to_hash, :attributes
|
10
|
+
|
11
|
+
def initialize(attributes = nil)
|
12
|
+
attributes.each do |attr, value|
|
13
|
+
send "#{attr}=", value
|
14
|
+
end if attributes
|
15
15
|
|
16
|
-
|
17
|
-
super if @check_required
|
16
|
+
yield self if block_given?
|
18
17
|
end
|
19
18
|
|
20
|
-
def self.name(value=nil)
|
21
|
-
@interface_name
|
22
|
-
@interface_name
|
19
|
+
def self.name(value = nil)
|
20
|
+
@interface_name ||= value
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
data/lib/opbeat/version.rb
CHANGED
data/opbeat.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'opbeat/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "opbeat"
|
8
|
+
gem.version = Opbeat::VERSION
|
9
|
+
gem.authors = ["Thomas Watson Steen", "Ron Cohen", "Noah Kantrowitz"]
|
10
|
+
gem.email = "support@opbeat.com"
|
11
|
+
gem.summary = "The official Opbeat Ruby client"
|
12
|
+
gem.homepage = "https://github.com/opbeat/opbeat_ruby"
|
13
|
+
gem.license = "Apache-2.0"
|
14
|
+
|
15
|
+
gem.files = `git ls-files -z`.split("\x0")
|
16
|
+
gem.require_paths = ["lib"]
|
17
|
+
gem.extra_rdoc_files = ["README.md", "LICENSE"]
|
18
|
+
|
19
|
+
gem.add_dependency "faraday", [">= 0.7.6", "< 0.10"]
|
20
|
+
gem.add_dependency "multi_json", "~> 1.0"
|
21
|
+
|
22
|
+
gem.add_development_dependency "bundler", "~> 1.7"
|
23
|
+
gem.add_development_dependency "rake", "~> 10.0"
|
24
|
+
gem.add_development_dependency "rspec", ">= 2.14"
|
25
|
+
gem.add_development_dependency "simplecov"
|
26
|
+
gem.add_development_dependency "delayed_job"
|
27
|
+
gem.add_development_dependency "sidekiq", "~> 2.17.0"
|
28
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require File::expand_path('../../spec_helper', __FILE__)
|
2
|
+
require 'opbeat'
|
3
|
+
|
4
|
+
describe Opbeat::BetterAttrAccessor do
|
5
|
+
|
6
|
+
let :klass do
|
7
|
+
Class.new do
|
8
|
+
include Opbeat::BetterAttrAccessor
|
9
|
+
|
10
|
+
attr_accessor :a
|
11
|
+
attr_accessor :b, :default => []
|
12
|
+
attr_accessor :c
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
let :child do
|
17
|
+
Class.new klass do
|
18
|
+
attr_accessor :d
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
subject{ klass.new }
|
23
|
+
|
24
|
+
describe 'the reader method' do
|
25
|
+
context 'when a value is not set' do
|
26
|
+
it 'should default to nil' do
|
27
|
+
expect(subject.a).to eq nil
|
28
|
+
end
|
29
|
+
it 'should use a default value if provided' do
|
30
|
+
expect(subject.b).to eq []
|
31
|
+
expect(subject.instance_variable_get '@b').to eq []
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'when a value is set' do
|
36
|
+
before do
|
37
|
+
subject.a = 'foo'
|
38
|
+
subject.b = :bar
|
39
|
+
subject.c = false
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should save the value' do
|
43
|
+
expect(subject.a).to eq 'foo'
|
44
|
+
end
|
45
|
+
it 'should save a boolean `false` value' do
|
46
|
+
expect(subject.c).to eq false
|
47
|
+
end
|
48
|
+
it 'should no longer return the default' do
|
49
|
+
expect(subject.b).to eq :bar
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when a default value is directly modified' do
|
54
|
+
before { subject.b << 9 }
|
55
|
+
it 'should not affect a new instance' do
|
56
|
+
expect(klass.new.b).to eq []
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '.attributes' do
|
62
|
+
it 'should be a Set of all attributes set up' do
|
63
|
+
expect(klass.attributes).to be_a Set
|
64
|
+
expect(klass.attributes).to eq %w[a b c].to_set
|
65
|
+
end
|
66
|
+
it 'should work with inheritance' do
|
67
|
+
expect(child.attributes).to eq %w[d a b c].to_set
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#attributes' do
|
72
|
+
it 'should return a hash of all attributes' do
|
73
|
+
subject.a = {'foo' => :bar}
|
74
|
+
subject.b << 8
|
75
|
+
expect(subject.attributes).to eq \
|
76
|
+
'a' => {'foo' => :bar},
|
77
|
+
'b' => [8],
|
78
|
+
'c' => nil
|
79
|
+
end
|
80
|
+
|
81
|
+
describe 'inheritance' do
|
82
|
+
subject{ child.new }
|
83
|
+
|
84
|
+
before do
|
85
|
+
subject.a = 21
|
86
|
+
subject.d = true
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should work' do
|
90
|
+
expect(subject.attributes).to eq \
|
91
|
+
'a' => 21,
|
92
|
+
'b' => [],
|
93
|
+
'c' => nil,
|
94
|
+
'd' => true
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File::expand_path('../../spec_helper', __FILE__)
|
2
|
+
require 'opbeat'
|
3
|
+
|
4
|
+
describe Opbeat::Client do
|
5
|
+
before do
|
6
|
+
|
7
|
+
@configuration = Opbeat::Configuration.new
|
8
|
+
@configuration.environments = ["test"]
|
9
|
+
@configuration.current_environment = :test
|
10
|
+
@client = Opbeat::Client.new(@configuration)
|
11
|
+
allow(@client).to receive(:send)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'send_release should send' do
|
15
|
+
message = "Test message"
|
16
|
+
expect(@client).to receive(:send).with("/releases/", message)
|
17
|
+
@client.send_release(message)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'send_message should send' do
|
21
|
+
event = Opbeat::Event.new :message => "my message"
|
22
|
+
expect(@client).to receive(:send).with("/errors/", event)
|
23
|
+
@client.send_event(event)
|
24
|
+
end
|
25
|
+
end
|