honeybadger 3.0.0.beta4 → 3.0.0.beta5

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: bd4f9a7c10b39fcdadf65441f1ba5cbba9b5d3e6
4
- data.tar.gz: 397e6c4ecc0456afe8b097b45eff87d512688277
3
+ metadata.gz: 024a03997f1e5a8f37ba751c32c6adb21e7cc3ea
4
+ data.tar.gz: f33bea69c33344b3bdc8c2d351cdf616063f7e1d
5
5
  SHA512:
6
- metadata.gz: fe2f9fb1c7806a528f9927e127ce33d1931c78bbe0285c80e5993cada0bb646f3bda858e6b178bd370bb98698ac86e238d96683ccc80105817b2f8daa0da3d58
7
- data.tar.gz: 62ed1567abeb8b94002efdfd3b355851021635d34e7c2ef728c2a15bf7c984ab3e36f2bb853eb1a34f6c39c473ab48645ef406eba16c512076634428c660752a
6
+ metadata.gz: 398c8575b8c3098e82d8a607ca039579af21bed972f5332df0de82d358613b83af4c6a1a4966ef947558374bc3d66051d71bb923ea6b08d4144120e6f8235aae
7
+ data.tar.gz: 438d726976ec17fa2de5e41faac98cd366ced5ef61183b262816bbe09a999647c0a7ee1f10e337864929c66edd4ee80d2d644a433671bdc87c6b786b712c0416
data/CHANGELOG.md CHANGED
@@ -28,6 +28,8 @@ adheres to [Semantic Versioning](http://semver.org/).
28
28
  - `Honeybadger.notify` now converts arguments which are not `Exception` or
29
29
  `Hash` types to strings and assigns them as the error message. Example:
30
30
  `Honeybadger.notify("Something went wrong")`.
31
+ - The currently deployed git revision is now detected automatically and sent
32
+ with error reports.
31
33
 
32
34
  ### Changed
33
35
  - `Honeybadger.start` has been deprecated and has no effect.
@@ -10,7 +10,6 @@ module Honeybadger
10
10
  module Backend
11
11
  class Server < Base
12
12
  ENDPOINTS = {
13
- ping: '/v1/ping'.freeze,
14
13
  notices: '/v1/notices'.freeze,
15
14
  deploys: '/v1/deploys'.freeze
16
15
  }.freeze
@@ -109,10 +109,15 @@ WELCOME
109
109
  project_options
110
110
  option :quiet, required: false, type: :boolean, aliases: :'-q', default: false, desc: 'Suppress all output unless notification fails.'
111
111
  def exec(*args)
112
+ if args.size == 0
113
+ say("honeybadger: exec needs a command to run", :red)
114
+ exit(1)
115
+ end
116
+
112
117
  config = build_config(options)
113
118
 
114
119
  if config.get(:api_key).to_s =~ BLANK
115
- say("No value provided for required options '--api-key'")
120
+ say("No value provided for required options '--api-key'", :red)
116
121
  exit(1)
117
122
  end
118
123
 
@@ -9,9 +9,11 @@ require 'honeybadger/logging'
9
9
  require 'honeybadger/backend'
10
10
  require 'honeybadger/config/defaults'
11
11
  require 'honeybadger/util/http'
12
+ require 'honeybadger/util/revision'
12
13
  require 'honeybadger/logging'
13
14
 
14
15
  module Honeybadger
16
+ # Internal
15
17
  class Config
16
18
  extend Forwardable
17
19
 
@@ -42,17 +44,18 @@ module Honeybadger
42
44
 
43
45
  attr_accessor :ruby, :env, :yaml, :framework
44
46
 
47
+ # Called by framework (see lib/honeybadger/init/) at the point of
48
+ # initialization. This is not required for the notifier to work (i.e. with
49
+ # `require 'honeybadger/ruby'`).
45
50
  def init!(opts = {}, env = ENV)
46
51
  self.framework = opts.freeze
47
52
  self.env = Env.new(env).freeze
48
53
  load_config_from_disk {|yaml| self.yaml = yaml.freeze }
54
+ detect_revision!
49
55
  init_logging!
50
56
  init_backend!
51
57
  logger.info(sprintf('Initializing Honeybadger Error Tracker for Ruby. Ship it! version=%s framework=%s', Honeybadger::VERSION, detected_framework))
52
58
  logger.warn('Entering development mode: data will not be reported.') if dev? && backend.kind_of?(Backend::Null)
53
- if valid? && !ping
54
- logger.warn('Failed to connect to Honeybadger service -- please verify that api.honeybadger.io is reachable (connection will be retried).')
55
- end
56
59
  self
57
60
  end
58
61
 
@@ -139,10 +142,6 @@ module Honeybadger
139
142
  !self[:env] || !dev?
140
143
  end
141
144
 
142
- def valid?
143
- self[:api_key].to_s =~ /\S/
144
- end
145
-
146
145
  def debug?
147
146
  !!self[:debug]
148
147
  end
@@ -239,14 +238,6 @@ module Honeybadger
239
238
  @root_regexp = Regexp.new("^#{ Regexp.escape(root) }")
240
239
  end
241
240
 
242
- def ping
243
- if result = send_ping
244
- return true
245
- end
246
-
247
- false
248
- end
249
-
250
241
  def detected_framework
251
242
  if self[:framework] =~ NOT_BLANK
252
243
  self[:framework].to_sym
@@ -273,6 +264,11 @@ module Honeybadger
273
264
 
274
265
  private
275
266
 
267
+ def detect_revision!
268
+ return if self[:revision]
269
+ set(:revision, Util::Revision.detect(self[:root]))
270
+ end
271
+
276
272
  # Internal: Optional path to honeybadger.log log file.
277
273
  #
278
274
  # Returns the Pathname log path if a log path was specified.
@@ -369,33 +365,6 @@ module Honeybadger
369
365
  obj.map(&:to_sym).include?(value.to_sym)
370
366
  end
371
367
 
372
- def ping_payload
373
- {
374
- version: VERSION,
375
- framework: framework_name,
376
- environment: self[:env],
377
- hostname: self[:hostname],
378
- config: to_hash
379
- }
380
- end
381
-
382
- def send_ping
383
- payload = ping_payload
384
- debug { sprintf('ping payload=%s', payload.to_json.dump) }
385
- response = backend.notify(:ping, payload)
386
- if response.success?
387
- debug { sprintf('ping response=%s', response.body.dump) }
388
- JSON.parse(response.body)
389
- else
390
- warn do
391
- msg = sprintf('ping failure code=%s', response.code)
392
- msg << sprintf(' message=%s', response.message.dump) if response.message =~ NOT_BLANK
393
- msg
394
- end
395
- nil
396
- end
397
- end
398
-
399
368
  def locate_absolute_path(path, root)
400
369
  path = Pathname.new(path.to_s)
401
370
  if path.absolute?
@@ -46,6 +46,11 @@ module Honeybadger
46
46
  default: Dir.pwd,
47
47
  type: String
48
48
  },
49
+ revision: {
50
+ description: 'The git revision of the project.',
51
+ default: nil,
52
+ type: String
53
+ },
49
54
  hostname: {
50
55
  description: 'The hostname of the current box.',
51
56
  default: Socket.gethostname,
@@ -185,6 +185,7 @@ module Honeybadger
185
185
  request: @request,
186
186
  server: {
187
187
  project_root: s(config[:root]),
188
+ revision: s(config[:revision]),
188
189
  environment_name: s(config[:env]),
189
190
  hostname: s(config[:hostname]),
190
191
  stats: stats,
@@ -0,0 +1,34 @@
1
+ module Honeybadger
2
+ module Util
3
+ class Revision
4
+ class << self
5
+ def detect(root = Dir.pwd)
6
+ from_heroku ||
7
+ from_capistrano(root) ||
8
+ from_git
9
+ end
10
+
11
+ private
12
+
13
+ # Requires (currently) alpha platform feature
14
+ # `heroku labs:enable runtime-dyno-metadata`
15
+ #
16
+ # See https://devcenter.heroku.com/articles/dyno-metadata
17
+ def from_heroku
18
+ ENV['HEROKU_SLUG_COMMIT']
19
+ end
20
+
21
+ def from_capistrano(root)
22
+ file = File.join(root, 'REVISION')
23
+ return nil unless File.file?(file)
24
+ File.read(file).strip rescue nil
25
+ end
26
+
27
+ def from_git
28
+ return nil unless File.directory?('.git')
29
+ `git rev-parse HEAD`.strip rescue nil
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,4 +1,4 @@
1
1
  module Honeybadger
2
2
  # Public: The current String Honeybadger version.
3
- VERSION = '3.0.0.beta4'.freeze
3
+ VERSION = '3.0.0.beta5'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybadger
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta4
4
+ version: 3.0.0.beta5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Honeybadger Industries LLC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-24 00:00:00.000000000 Z
11
+ date: 2017-01-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Make managing application errors a more pleasant experience.
14
14
  email:
@@ -75,6 +75,7 @@ files:
75
75
  - lib/honeybadger/util/http.rb
76
76
  - lib/honeybadger/util/request_hash.rb
77
77
  - lib/honeybadger/util/request_payload.rb
78
+ - lib/honeybadger/util/revision.rb
78
79
  - lib/honeybadger/util/sanitizer.rb
79
80
  - lib/honeybadger/util/stats.rb
80
81
  - lib/honeybadger/version.rb