class RavenLogger
Public Class Methods
captureMessage(title, opts={})
click to toggle source
# File lib/raven_logger.rb, line 12 def captureMessage(title, opts={}) new.captureMessage(title, opts) end
Public Instance Methods
captureMessage(title, opts={})
click to toggle source
# File lib/raven_logger.rb, line 17 def captureMessage(title, opts={}) raise ArgumentError.new('Event title is missing') if !title raise ArgumentError.new('SENTRY_PROJECT_URL env variable is missing') if !ENV['SENTRY_PROJECT_URL'] raise ArgumentError.new('SENTRY_KEY env variable is missing') if !ENV['SENTRY_KEY'] raise ArgumentError.new('SENTRY_SECRET env variable is missing') if !ENV['SENTRY_SECRET'] opts = symbolize_keys(opts) opts[:level] ||= :info extra = opts[:extra] || {} level = opts[:level].to_s valid_levels = %w(fatal error warning info debug) if !valid_levels.include? level raise ArgumentError.new("'#{level}' is not a valid level. Please use either: #{valid_levels.join(", ")}") end extra.merge!(git_message: Git::Revision.message) payload = { "event_id": (Digest::MD5.hexdigest SecureRandom.uuid), "timestamp": Time.now.utc.iso8601, "message": title, "logger": "ruby", "release": Git::Revision.commit_short, "server_name": Socket.gethostname, "environment": ENV['RAILS_ENV'] || 'testing', "level": level, "extra": extra } RestClient.post ENV['SENTRY_PROJECT_URL'], payload.to_json, headers Rails.logger.debug("Sentry event sent.".green) nil end
Private Instance Methods
headers()
click to toggle source
# File lib/raven_logger.rb, line 55 def headers headers = { "Content-Type": "application/json", "X-Sentry-Auth": "Sentry sentry_version=7, sentry_timestamp=#{Time.now.utc.to_i}, sentry_key=#{ENV['SENTRY_KEY']}, sentry_secret=#{ENV['SENTRY_SECRET']}, sentry_client=raven-intricately/1.0" } end
symbolize_keys(obj)
click to toggle source
# File lib/raven_logger.rb, line 62 def symbolize_keys(obj) case obj when Array obj.inject([]){|res, val| res << case val when Hash, Array symbolize_keys(val) else val end res } when Hash obj.inject({}){|res, (key, val)| nkey = case key when String key.to_sym else key end nval = case val when Hash, Array symbolize_keys(val) else val end res[nkey] = nval res } else obj end end