class Honeybadger::CLI::Main
Public Class Methods
project_options()
click to toggle source
# File lib/honeybadger/cli/main.rb, line 26 def self.project_options option :api_key, required: false, aliases: :'-k', type: :string, desc: 'Api key of your Honeybadger application' option :environment, required: false, aliases: [:'-e', :'-env'], type: :string, desc: 'Environment this command is being executed in (i.e. "production", "staging")' option :skip_rails_load, required: false, type: :boolean, desc: 'Flag to skip rails initialization' end
Public Instance Methods
deploy()
click to toggle source
# File lib/honeybadger/cli/main.rb, line 73 def deploy config = build_config(options) if config.get(:api_key).to_s =~ BLANK say("No value provided for required options '--api-key'") exit(1) end Deploy.new(options, [], config).run rescue => e log_error(e) exit(1) end
exec(*args)
click to toggle source
# File lib/honeybadger/cli/main.rb, line 113 def exec(*args) if args.size == 0 say("honeybadger: exec needs a command to run", :red) exit(1) end config = build_config(options) if config.get(:api_key).to_s =~ BLANK say("No value provided for required options '--api-key'", :red) exit(1) end Exec.new(options, args, config).run rescue => e log_error(e) exit(1) end
help(*args, &block)
click to toggle source
Calls superclass method
# File lib/honeybadger/cli/main.rb, line 32 def help(*args, &block) if args.size == 0 say(<<-WELCOME) ⚡ Honeybadger v#{VERSION} Honeybadger is your favorite error tracker for Ruby. When your app raises an exception we notify you with all the context you need to fix it. The Honeybadger CLI provides tools for interacting with Honeybadger via the command line. If you need support, please drop us a line: support@honeybadger.io WELCOME end super end
install(api_key)
click to toggle source
# File lib/honeybadger/cli/main.rb, line 51 def install(api_key) Install.new(options, api_key).run rescue => e log_error(e) exit(1) end
notify()
click to toggle source
# File lib/honeybadger/cli/main.rb, line 96 def notify config = build_config(options) if config.get(:api_key).to_s =~ BLANK say("No value provided for required options '--api-key'") exit(1) end Notify.new(options, [], config).run rescue => e log_error(e) exit(1) end
test()
click to toggle source
# File lib/honeybadger/cli/main.rb, line 61 def test Test.new(options).run rescue => e log_error(e) exit(1) end
Private Instance Methods
build_config(options)
click to toggle source
# File lib/honeybadger/cli/main.rb, line 141 def build_config(options) load_env(options) config = Honeybadger.config config.set(:report_data, true) config.set(:api_key, fetch_value(options, 'api_key')) if options.has_key?('api_key') config.set(:env, fetch_value(options, 'environment')) if options.has_key?('environment') config end
fetch_value(options, key)
click to toggle source
# File lib/honeybadger/cli/main.rb, line 137 def fetch_value(options, key) options[key] == key ? nil : options[key] end
load_env(options)
click to toggle source
# File lib/honeybadger/cli/main.rb, line 152 def load_env(options) # Initialize Rails when running from Rails root. environment_rb = File.join(Dir.pwd, 'config', 'environment.rb') if File.exist?(environment_rb) load_rails_env_if_allowed(environment_rb, options) end # Ensure config is loaded (will be skipped if initialized by Rails). Honeybadger.config.load! end
load_rails_env(environment_rb)
click to toggle source
# File lib/honeybadger/cli/main.rb, line 171 def load_rails_env(environment_rb) begin require 'rails' rescue LoadError # No Rails, so skip loading Rails environment. return end require environment_rb end
load_rails_env_if_allowed(environment_rb, options)
click to toggle source
# File lib/honeybadger/cli/main.rb, line 162 def load_rails_env_if_allowed(environment_rb, options) # Skip Rails initialization according to option flag if options.has_key?('skip_rails_load') && fetch_value(options, 'skip_rails_load') say("Skipping Rails initialization.") else load_rails_env(environment_rb) end end
log_error(e)
click to toggle source
# File lib/honeybadger/cli/main.rb, line 181 def log_error(e) case e when *Util::HTTP::ERRORS say(<<-MSG, :red) !! --- Failed to notify Honeybadger ------------------------------------------- !! # What happened? We encountered an HTTP error while contacting our service. Issues like this are usually temporary. # Error details #{e.class}: #{e.message}\n at #{e.backtrace && e.backtrace.first} # What can I do? - Retry the command. - Make sure you can connect to api.honeybadger.io (`curl https://api.honeybadger.io/v1/notices`). - If you continue to see this message, email us at support@honeybadger.io (don't forget to attach this output!) !! --- End -------------------------------------------------------------------- !! MSG else say(<<-MSG, :red) !! --- Honeybadger command failed --------------------------------------------- !! # What did you try to do? You tried to execute the following command: `honeybadger #{ARGV.join(' ')}` # What actually happend? We encountered a Ruby exception and were forced to cancel your request. # Error details #{e.class}: #{e.message} #{e.backtrace && e.backtrace.join("\n ")} # What can I do? - If you're calling the `install` or `test` command in a Rails app, make sure you can boot the Rails console: `bundle exec rails console`. - Retry the command. - If you continue to see this message, email us at support@honeybadger.io (don't forget to attach this output!) !! --- End -------------------------------------------------------------------- !! MSG end end