defmodule HoneybadgerTestingException do defexception message: """ Testing honeybadger via `mix honeybadger.test`. If you can see this, it works. """ end defmodule Mix.Tasks.Honeybadger.Test do use Mix.Task @shortdoc "Verify your hex package installation by sending a test exception to the honeybadger service" def run(_) do with :ok <- assert_env() do send_notice() end end defp send_notice do # mute excluded envs Application.put_env(:honeybadger, :exclude_envs, []) {:ok, _started} = Application.ensure_all_started(:honeybadger) # send the notification Honeybadger.notify(%HoneybadgerTestingException{}) # this will block the mix task from stopping before # the genserver sends the notification to honeybadger Honeybadger.Client |> Process.whereis |> GenServer.stop # if there is no error till this point, we should assume that our notice succeeded Mix.shell().info """ Raising 'HoneybadgerTestingException' to simulate application failure. ⚡ --- Honeybadger is installed! ----------------------------------------------- Good news: You're one deploy away from seeing all of your exceptions in Honeybadger. For now, we've generated a test exception for you. If you ever need help: - Check out our documentation: https://hexdocs.pm/honeybadger - Email the founders: support@honeybadger.io Most people don't realize that Honeybadger is a small, bootstrapped company. We really couldn't do this without you. Thank you for allowing us to do what we love: making developers awesome. Happy 'badgering! Sincerely, Ben, Josh and Starr https://www.honeybadger.io/about/ ⚡ --- End -------------------------------------------------------------------- """ end defp assert_env do try do Mix.Task.run "app.start" # to be able to read the env Honeybadger.get_env(:api_key) :ok rescue _ -> Mix.shell().error """ Your api_key is not set Set it either in your config file or using the HONEYBADGER_API_KEY environment variable For more info visit: https://github.com/honeybadger-io/honeybadger-elixir#2-set-your-api-key-and-environment-name """ :error end end end