Skip to content

Commit

Permalink
Merge pull request #106 from TruemarkDev/generator-for-honeybadger
Browse files Browse the repository at this point in the history
Generator for honeybadger
  • Loading branch information
abhaynikam authored May 31, 2024
2 parents 868e729 + e632993 commit faaf902
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* Adds Avo generator. ([@mausamp][])
* Adds Sentry generator. ([@mausamp][])
* Adds Dotenv generator. ([@mausamp][])
* Adds Honeybadger generator. ([@mausamp][])

## 0.13.0 (March 26th, 2024)
* Adds Letter Opener generator. ([@coolprobn][])
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ The boring generator introduces following generators:
- Install Doorkeeper with devise: `rails generate boring:devise:doorkeeper:install`
- Install Sentry: `rails generate boring:sentry:install --use_env_variable --breadcrumbs_logger=<breadcrumbs_logger_options>`
- Install Dotenv: `rails generate boring:dotenv:install`
- Install Honeybadger: `rails generate boring:honeybadger:install`

## Screencasts

Expand Down
47 changes: 47 additions & 0 deletions lib/generators/boring/honeybadger/install/install_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# frozen_string_literal: true

module Boring
module Honeybadger
class InstallGenerator < Rails::Generators::Base
source_root File.expand_path("templates", __dir__)
desc 'Adds honeybadger to the app'

class_option :use_env_variable, type: :boolean, aliases: "-ev",
desc: 'Use ENV variable for devise_jwt_secret_key. By default Rails credentials will be used.'

def add_honeybadger_gem
say 'Adding Honeybadger gem', :green

Bundler.with_unbundled_env do
run 'bundle add honeybadger'
end
end

def configure_honeybadger_gem
say 'Setting up Honeybadger', :green

@api_key = honeybadger_api_key

template 'honeybadger.yml', 'config/honeybadger.yml'

show_readme
end

private

def show_readme
readme_template = File.read(File.join(self.class.source_root, 'README'))
readme_content = ERB.new(readme_template).result(binding)
say readme_content
end

def honeybadger_api_key
if options[:use_env_variable]
"ENV['HONEYBADGER_API_KEY']"
else
"Rails.application.credentials.dig(:honeybadger, :api_key)"
end
end
end
end
end
6 changes: 6 additions & 0 deletions lib/generators/boring/honeybadger/install/templates/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
===============================================================================

The API key for Honeybadger will be used from <%= @api_key %>.
You can change these values if they don't match with your app.

===============================================================================
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
# For more options, see https://docs.honeybadger.io/lib/ruby/gem-reference/configuration

api_key: <%= @api_key %>

# The environment your app is running in.
env: "<%= Rails.env %>"

# The absolute path to your project folder.
root: "<%= Rails.root.to_s %>"

# Honeybadger won't report errors in these environments.
development_environments:
- test
- development
- cucumber

# By default, Honeybadger won't report errors in the development_environments.
# You can override this by explicitly setting report_data to true or false.
# report_data: true

# The current Git revision of your project. Defaults to the last commit hash.
# revision: null

# Enable verbose debug logging (useful for troubleshooting).
debug: false
40 changes: 40 additions & 0 deletions test/generators/honeybadger_install_generator_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# fronzen_string_literal: true

require 'test_helper'
require 'generators/boring/honeybadger/install/install_generator'

class HoneybadgerInstallGeneratorTest < Rails::Generators::TestCase
tests Boring::Honeybadger::InstallGenerator
setup :build_app
teardown :teardown_app

include GeneratorHelper

def destination_root
app_path
end

def test_should_configure_honeybadger
Dir.chdir(app_path) do
quietly { run_generator }

assert_gem 'honeybadger'

assert_file 'config/honeybadger.yml' do |content|
assert_match(/\napi_key: Rails.application.credentials.dig\(:honeybadger, :api_key\)\n/, content)
end
end
end

def test_should_use_env_variable_for_api_key
Dir.chdir(app_path) do
quietly { run_generator([destination_root, '--use_env_variable']) }

assert_gem 'honeybadger'

assert_file 'config/honeybadger.yml' do |content|
assert_match(/api_key: ENV\['HONEYBADGER_API_KEY'\]\n/, content)
end
end
end
end

0 comments on commit faaf902

Please sign in to comment.