boring_generators 0.13.0 → 0.14.0
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 +4 -4
- data/CHANGELOG.md +79 -49
- data/Gemfile.lock +2 -2
- data/README.md +13 -0
- data/lib/boring_generators/generator_helper.rb +34 -0
- data/lib/boring_generators/version.rb +1 -1
- data/lib/generators/boring/active_storage/azure/install/install_generator.rb +1 -1
- data/lib/generators/boring/annotate/install/install_generator.rb +52 -0
- data/lib/generators/boring/audit/install/install_generator.rb +1 -1
- data/lib/generators/boring/avo/install/install_generator.rb +25 -0
- data/lib/generators/boring/cancancan/install/install_generator.rb +34 -0
- data/lib/generators/boring/devise/doorkeeper/install/install_generator.rb +190 -0
- data/lib/generators/boring/devise/install/install_generator.rb +11 -0
- data/lib/generators/boring/dotenv/install/install_generator.rb +51 -0
- data/lib/generators/boring/dotenv/install/templates/.env +3 -0
- data/lib/generators/boring/factory_bot/install/install_generator.rb +1 -1
- data/lib/generators/boring/faker/install/install_generator.rb +1 -1
- data/lib/generators/boring/favicon/build/build_generator.rb +1 -1
- data/lib/generators/boring/figjam/install/install_generator.rb +33 -0
- data/lib/generators/boring/honeybadger/install/install_generator.rb +47 -0
- data/lib/generators/boring/honeybadger/install/templates/README +6 -0
- data/lib/generators/boring/honeybadger/install/templates/honeybadger.yml.tt +26 -0
- data/lib/generators/boring/letter_opener/install/install_generator.rb +8 -9
- data/lib/generators/boring/oauth/google/install/install_generator.rb +2 -2
- data/lib/generators/boring/pronto/base_generator.rb +78 -0
- data/lib/generators/boring/pronto/github_action/install/install_generator.rb +27 -0
- data/lib/generators/boring/pronto/github_action/install/templates/pronto.yml.tt +53 -0
- data/lib/generators/boring/pronto/gitlab_ci/install/install_generator.rb +112 -0
- data/lib/generators/boring/pronto/gitlab_ci/install/templates/.gitlab-ci.yml.tt +22 -0
- data/lib/generators/boring/pronto/gitlab_ci/install/templates/README +7 -0
- data/lib/generators/boring/rack_mini_profiler/install/install_generator.rb +38 -0
- data/lib/generators/boring/rails_erd/install/install_generator.rb +35 -0
- data/lib/generators/boring/rspec/install/install_generator.rb +1 -1
- data/lib/generators/boring/sentry/install/install_generator.rb +48 -0
- data/lib/generators/boring/sentry/install/templates/sentry.rb +7 -0
- data/lib/generators/boring/vcr/install/install_generator.rb +125 -0
- data/lib/generators/boring/vcr/install/templates/rspec/vcr.rb.tt +8 -0
- data/lib/generators/boring/webmock/install/install_generator.rb +6 -5
- metadata +25 -2
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Figjam
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
desc 'Adds figjam gem to the app'
|
7
|
+
|
8
|
+
def add_figjam_gem
|
9
|
+
say 'Adding figjam gem', :green
|
10
|
+
|
11
|
+
Bundler.with_unbundled_env do
|
12
|
+
run 'bundle add figjam'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def configure_figjam
|
17
|
+
say 'Configuring figjam', :green
|
18
|
+
|
19
|
+
Bundler.with_unbundled_env do
|
20
|
+
run 'bundle exec figjam install'
|
21
|
+
end
|
22
|
+
|
23
|
+
FileUtils.cp('config/application.yml', 'config/application.yml.sample')
|
24
|
+
|
25
|
+
unless File.exist?('.gitignore')
|
26
|
+
create_file '.gitignore'
|
27
|
+
end
|
28
|
+
|
29
|
+
insert_into_file('.gitignore', "\n/config/application.yml\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Honeybadger
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path("templates", __dir__)
|
7
|
+
desc 'Adds honeybadger to the app'
|
8
|
+
|
9
|
+
class_option :use_env_variable, type: :boolean, aliases: "-ev",
|
10
|
+
desc: 'Use ENV variable for devise_jwt_secret_key. By default Rails credentials will be used.'
|
11
|
+
|
12
|
+
def add_honeybadger_gem
|
13
|
+
say 'Adding Honeybadger gem', :green
|
14
|
+
|
15
|
+
Bundler.with_unbundled_env do
|
16
|
+
run 'bundle add honeybadger'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def configure_honeybadger_gem
|
21
|
+
say 'Setting up Honeybadger', :green
|
22
|
+
|
23
|
+
@api_key = honeybadger_api_key
|
24
|
+
|
25
|
+
template 'honeybadger.yml', 'config/honeybadger.yml'
|
26
|
+
|
27
|
+
show_readme
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def show_readme
|
33
|
+
readme_template = File.read(File.join(self.class.source_root, 'README'))
|
34
|
+
readme_content = ERB.new(readme_template).result(binding)
|
35
|
+
say readme_content
|
36
|
+
end
|
37
|
+
|
38
|
+
def honeybadger_api_key
|
39
|
+
if options[:use_env_variable]
|
40
|
+
"ENV['HONEYBADGER_API_KEY']"
|
41
|
+
else
|
42
|
+
"Rails.application.credentials.dig(:honeybadger, :api_key)"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
===============================================================================
|
2
|
+
|
3
|
+
The API key for Honeybadger will be used from <%= @api_key %>.
|
4
|
+
You can change these values if they don't match with your app.
|
5
|
+
|
6
|
+
===============================================================================
|
@@ -0,0 +1,26 @@
|
|
1
|
+
---
|
2
|
+
# For more options, see https://docs.honeybadger.io/lib/ruby/gem-reference/configuration
|
3
|
+
|
4
|
+
api_key: <%= @api_key %>
|
5
|
+
|
6
|
+
# The environment your app is running in.
|
7
|
+
env: "<%= Rails.env %>"
|
8
|
+
|
9
|
+
# The absolute path to your project folder.
|
10
|
+
root: "<%= Rails.root.to_s %>"
|
11
|
+
|
12
|
+
# Honeybadger won't report errors in these environments.
|
13
|
+
development_environments:
|
14
|
+
- test
|
15
|
+
- development
|
16
|
+
- cucumber
|
17
|
+
|
18
|
+
# By default, Honeybadger won't report errors in the development_environments.
|
19
|
+
# You can override this by explicitly setting report_data to true or false.
|
20
|
+
# report_data: true
|
21
|
+
|
22
|
+
# The current Git revision of your project. Defaults to the last commit hash.
|
23
|
+
# revision: null
|
24
|
+
|
25
|
+
# Enable verbose debug logging (useful for troubleshooting).
|
26
|
+
debug: false
|
@@ -8,9 +8,9 @@ module Boring
|
|
8
8
|
def add_letter_opener_gem
|
9
9
|
say "Adding letter_opener gem", :green
|
10
10
|
|
11
|
-
gem_content = <<~RUBY
|
12
|
-
\
|
13
|
-
|
11
|
+
gem_content = <<~RUBY.indent(2)
|
12
|
+
\n# Preview email in the default browser instead of sending it to real mailbox
|
13
|
+
gem "letter_opener"
|
14
14
|
RUBY
|
15
15
|
|
16
16
|
insert_into_file "Gemfile", gem_content, after: /group :development do/
|
@@ -23,16 +23,15 @@ module Boring
|
|
23
23
|
def configure_letter_opener
|
24
24
|
say "Configuring letter_opener", :green
|
25
25
|
|
26
|
-
configuration_content = <<~RUBY.chomp
|
27
|
-
\n
|
28
|
-
|
29
|
-
|
30
|
-
end
|
26
|
+
configuration_content = <<~RUBY.chomp.indent(2)
|
27
|
+
\n# Preview email in the browser instead of sending it
|
28
|
+
config.action_mailer.delivery_method = :letter_opener
|
29
|
+
config.action_mailer.perform_deliveries = true
|
31
30
|
RUBY
|
32
31
|
|
33
32
|
gsub_file "config/environments/development.rb",
|
34
33
|
/end\Z/,
|
35
|
-
configuration_content
|
34
|
+
"#{configuration_content}\nend"
|
36
35
|
end
|
37
36
|
end
|
38
37
|
end
|
@@ -14,8 +14,8 @@ module Boring
|
|
14
14
|
desc "Adds Google OmniAuth to the application"
|
15
15
|
source_root File.expand_path("templates", __dir__)
|
16
16
|
|
17
|
-
def
|
18
|
-
say "Adding
|
17
|
+
def add_google_omniauth_gem
|
18
|
+
say "Adding Google OmniAuth gem", :green
|
19
19
|
Bundler.with_unbundled_env do
|
20
20
|
run "bundle add omniauth-google-oauth2"
|
21
21
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "boring_generators/generator_helper"
|
4
|
+
|
5
|
+
module Boring
|
6
|
+
module Pronto
|
7
|
+
class BaseGenerator < Rails::Generators::Base
|
8
|
+
desc "Adds Pronto gem with various extensions"
|
9
|
+
|
10
|
+
class_option :skip_extensions,
|
11
|
+
type: :array,
|
12
|
+
aliases: "-se",
|
13
|
+
desc:
|
14
|
+
"List of extensions to skip. Available options: brakeman, flay, reek, rubocop",
|
15
|
+
enum: %w[brakeman flay reek rubocop],
|
16
|
+
default: []
|
17
|
+
|
18
|
+
include BoringGenerators::GeneratorHelper
|
19
|
+
|
20
|
+
def add_pronto_gems
|
21
|
+
say "Adding pronto gems", :green
|
22
|
+
|
23
|
+
gem_content = <<~RUBY.strip
|
24
|
+
#{pronto_gem_content}
|
25
|
+
#{pronto_brakemen_gem_content}
|
26
|
+
#{pronto_flay_gem_content}
|
27
|
+
#{pronto_reek_gem_content}
|
28
|
+
#{pronto_rubocop_gem_content}
|
29
|
+
RUBY
|
30
|
+
|
31
|
+
return if gem_content.blank?
|
32
|
+
|
33
|
+
insert_into_file "Gemfile", "\n#{gem_content}\n"
|
34
|
+
|
35
|
+
Bundler.with_unbundled_env { run "bundle install" }
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def pronto_gem_content
|
41
|
+
return if gem_installed?("pronto")
|
42
|
+
|
43
|
+
<<~RUBY.strip
|
44
|
+
# Pronto is a code linter runner that can be used with git and GitHub pull requests
|
45
|
+
gem "pronto"
|
46
|
+
RUBY
|
47
|
+
end
|
48
|
+
|
49
|
+
def pronto_brakemen_gem_content
|
50
|
+
return if options[:skip_extensions].include?("brakeman")
|
51
|
+
return if gem_installed?("pronto-brakeman")
|
52
|
+
|
53
|
+
"gem \"pronto-brakeman\", require: false"
|
54
|
+
end
|
55
|
+
|
56
|
+
def pronto_flay_gem_content
|
57
|
+
return if options[:skip_extensions].include?("flay")
|
58
|
+
return if gem_installed?("pronto-flay")
|
59
|
+
|
60
|
+
"gem \"pronto-flay\", require: false"
|
61
|
+
end
|
62
|
+
|
63
|
+
def pronto_reek_gem_content
|
64
|
+
return if options[:skip_extensions].include?("reek")
|
65
|
+
return if gem_installed?("pronto-reek")
|
66
|
+
|
67
|
+
"gem \"pronto-reek\", require: false"
|
68
|
+
end
|
69
|
+
|
70
|
+
def pronto_rubocop_gem_content
|
71
|
+
return if options[:skip_extensions].include?("rubocop")
|
72
|
+
return if gem_installed?("pronto-rubocop")
|
73
|
+
|
74
|
+
"gem \"pronto-rubocop\", require: false"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "generators/boring/pronto/base_generator"
|
4
|
+
require "boring_generators/generator_helper"
|
5
|
+
|
6
|
+
module Boring
|
7
|
+
module Pronto
|
8
|
+
module GithubAction
|
9
|
+
class InstallGenerator < Boring::Pronto::BaseGenerator
|
10
|
+
desc "Adds Pronto configurations to Github Action"
|
11
|
+
source_root File.expand_path("templates", __dir__)
|
12
|
+
|
13
|
+
class_option :ruby_version, type: :string, aliases: "-rv"
|
14
|
+
|
15
|
+
include BoringGenerators::GeneratorHelper
|
16
|
+
|
17
|
+
def add_pronto_configuration_for_github_action
|
18
|
+
say "Adding Pronto configurations to .github/workflows/pronto.yml", :green
|
19
|
+
|
20
|
+
@ruby_version = options.ruby_version || app_ruby_version
|
21
|
+
|
22
|
+
template("pronto.yml", ".github/workflows/pronto.yml")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
on: [pull_request]
|
2
|
+
|
3
|
+
name: Pronto
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
pronto:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
permissions:
|
9
|
+
contents: read
|
10
|
+
pull-requests: write
|
11
|
+
statuses: write
|
12
|
+
steps:
|
13
|
+
- name: Checkout code
|
14
|
+
uses: actions/checkout@v2
|
15
|
+
with:
|
16
|
+
fetch-depth: 0
|
17
|
+
|
18
|
+
- name: Setup Ruby
|
19
|
+
uses: ruby/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
ruby-version: <%= @ruby_version %>
|
22
|
+
- name: Ruby gem cache
|
23
|
+
uses: actions/cache@v1
|
24
|
+
with:
|
25
|
+
path: vendor/bundle
|
26
|
+
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
|
27
|
+
restore-keys: |
|
28
|
+
${{ runner.os }}-gems-
|
29
|
+
- name: Install gems
|
30
|
+
run: |
|
31
|
+
bundle config path vendor/bundle
|
32
|
+
bundle install --jobs 4 --retry 3
|
33
|
+
|
34
|
+
- name: Setup Node
|
35
|
+
uses: actions/setup-node@v1
|
36
|
+
with:
|
37
|
+
node-version: 10.13.0
|
38
|
+
- name: Find yarn cache location
|
39
|
+
id: yarn-cache
|
40
|
+
run: echo "::set-output name=dir::$(yarn cache dir)"
|
41
|
+
- name: JS package cache
|
42
|
+
uses: actions/cache@v1
|
43
|
+
with:
|
44
|
+
path: ${{ steps.yarn-cache.outputs.dir }}
|
45
|
+
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
46
|
+
restore-keys: |
|
47
|
+
${{ runner.os }}-yarn-
|
48
|
+
- name: Install packages
|
49
|
+
run: |
|
50
|
+
yarn install --pure-lockfile
|
51
|
+
- name: Run Pronto
|
52
|
+
run: |
|
53
|
+
PRONTO_PULL_REQUEST_ID="${{ github.event.pull_request.number }}" PRONTO_GITHUB_ACCESS_TOKEN="${{ github.token }}" bundle exec pronto run -f github_status github_pr -c origin/${{ github.base_ref }}
|
@@ -0,0 +1,112 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "generators/boring/pronto/base_generator"
|
4
|
+
require "boring_generators/generator_helper"
|
5
|
+
|
6
|
+
module Boring
|
7
|
+
module Pronto
|
8
|
+
module GitlabCi
|
9
|
+
class InstallGenerator < Boring::Pronto::BaseGenerator
|
10
|
+
desc "Adds Pronto gem with various extensions and configures it for Gitlab CI"
|
11
|
+
source_root File.expand_path("templates", __dir__)
|
12
|
+
|
13
|
+
class_option :ruby_version, type: :string, aliases: "-rv"
|
14
|
+
|
15
|
+
include BoringGenerators::GeneratorHelper
|
16
|
+
|
17
|
+
def add_configuration
|
18
|
+
@ruby_version = options.ruby_version || app_ruby_version
|
19
|
+
|
20
|
+
if File.exist?(".gitlab-ci.yml")
|
21
|
+
add_pronto_configuration
|
22
|
+
add_lint_stage
|
23
|
+
show_readme
|
24
|
+
else
|
25
|
+
create_gitlab_ci_with_pronto
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def create_gitlab_ci_with_pronto
|
32
|
+
say "Creating .gitlab-ci.yml with Pronto configurations", :yellow
|
33
|
+
template ".gitlab-ci.yml", ".gitlab-ci.yml"
|
34
|
+
end
|
35
|
+
|
36
|
+
def add_pronto_configuration
|
37
|
+
return if pronto_configuration_exists?
|
38
|
+
|
39
|
+
say "Adding Pronto configurations to .gitlab-ci.yml", :green
|
40
|
+
inject_into_file ".gitlab-ci.yml", pronto_ci_content, before: /\Z/
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_lint_stage
|
44
|
+
return if lint_stage_exists?
|
45
|
+
|
46
|
+
if stages_exists?
|
47
|
+
inject_into_file ".gitlab-ci.yml",
|
48
|
+
optimize_indentation("\n- lint", 2).chomp,
|
49
|
+
after: /stages:/
|
50
|
+
else
|
51
|
+
inject_into_file ".gitlab-ci.yml",
|
52
|
+
stages_configuration,
|
53
|
+
before: /pronto:/
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def show_readme
|
58
|
+
readme "README"
|
59
|
+
end
|
60
|
+
|
61
|
+
def pronto_configuration_exists?
|
62
|
+
gitlab_ci_file_content["pronto"]
|
63
|
+
end
|
64
|
+
|
65
|
+
def lint_stage_exists?
|
66
|
+
gitlab_ci_file_content["stages"] &&
|
67
|
+
gitlab_ci_file_content["stages"].include?("lint")
|
68
|
+
end
|
69
|
+
|
70
|
+
def stages_exists?
|
71
|
+
gitlab_ci_file_content["stages"]
|
72
|
+
end
|
73
|
+
|
74
|
+
def gitlab_ci_file_content
|
75
|
+
@gitlab_ci_file_content ||=
|
76
|
+
YAML.safe_load(File.open(".gitlab-ci.yml"), aliases: true) || {}
|
77
|
+
end
|
78
|
+
|
79
|
+
def pronto_ci_content
|
80
|
+
<<~RUBY
|
81
|
+
pronto:
|
82
|
+
image: ruby:#{@ruby_version}
|
83
|
+
stage: lint
|
84
|
+
only:
|
85
|
+
# run pronto on merge requests and when new changes are pushed to it
|
86
|
+
- merge_requests
|
87
|
+
variables:
|
88
|
+
PRONTO_GITLAB_API_PRIVATE_TOKEN: $PRONTO_ACCESS_TOKEN
|
89
|
+
before_script:
|
90
|
+
# Install cmake required for rugged gem (Pronto depends on it)
|
91
|
+
- apt-get update && apt-get install -y cmake
|
92
|
+
# use bundler version same as the one that bundled the Gemfile
|
93
|
+
- gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" --no-document
|
94
|
+
- bundle install --jobs $(nproc)
|
95
|
+
script:
|
96
|
+
# Pronto fails with the error "revspec 'origin/{target_branch}' because Gitlab fetches changes with git depth set to 20 by default. You can remove this line if you update Gitlab CI setting to clone the full project.
|
97
|
+
- git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
98
|
+
# Run pronto on branch of current merge request
|
99
|
+
- bundle exec pronto run -f gitlab_mr -c origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
100
|
+
RUBY
|
101
|
+
end
|
102
|
+
|
103
|
+
def stages_configuration
|
104
|
+
<<~RUBY
|
105
|
+
stages:
|
106
|
+
- lint
|
107
|
+
RUBY
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
stages:
|
2
|
+
- lint
|
3
|
+
|
4
|
+
pronto:
|
5
|
+
image: ruby:<%= @ruby_version %>
|
6
|
+
stage: lint
|
7
|
+
only:
|
8
|
+
# run pronto on merge requests and when new changes are pushed to it
|
9
|
+
- merge_requests
|
10
|
+
variables:
|
11
|
+
PRONTO_GITLAB_API_PRIVATE_TOKEN: $PRONTO_ACCESS_TOKEN
|
12
|
+
before_script:
|
13
|
+
# Install cmake required for rugged gem (Pronto depends on it)
|
14
|
+
- apt-get update && apt-get install -y cmake
|
15
|
+
# use bundler version same as the one that bundled the Gemfile
|
16
|
+
- gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)" --no-document
|
17
|
+
- bundle install --jobs $(nproc)
|
18
|
+
script:
|
19
|
+
# Pronto fails with the error "revspec 'origin/{target_branch}' because Gitlab fetches changes with git depth set to 20 by default. You can remove this line if you update Gitlab CI setting to clone the full project.
|
20
|
+
- git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
21
|
+
# Run pronto on branch of current merge request
|
22
|
+
- bundle exec pronto run -f gitlab_mr -c origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
@@ -0,0 +1,7 @@
|
|
1
|
+
|
2
|
+
===============================================================================
|
3
|
+
|
4
|
+
❗️❗️
|
5
|
+
Pronto needs your Private Gitlab API token for posting comments in the merge request. It is configured as "PRONTO_ACCESS_TOKEN" inside .gitlab-ci.yml, don't forget to configure this variable in your Gitlab Project settings before pushing your new changes to git.
|
6
|
+
|
7
|
+
===============================================================================
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'boring_generators/generator_helper'
|
4
|
+
|
5
|
+
module Boring
|
6
|
+
module RackMiniProfiler
|
7
|
+
class InstallGenerator < Rails::Generators::Base
|
8
|
+
include BoringGenerators::GeneratorHelper
|
9
|
+
|
10
|
+
desc "Adds rack-mini-profiler to the application"
|
11
|
+
|
12
|
+
def add_rack_mini_profiler_gem
|
13
|
+
say "Adding rack-mini-profiler gem", :green
|
14
|
+
|
15
|
+
return if gem_installed?("rack-mini-profiler")
|
16
|
+
|
17
|
+
rack_mini_profiler_gems_content = <<~RUBY
|
18
|
+
\t# Profiler for your Rails application
|
19
|
+
\tgem 'rack-mini-profiler', require: false\n
|
20
|
+
RUBY
|
21
|
+
|
22
|
+
insert_into_file "Gemfile",
|
23
|
+
rack_mini_profiler_gems_content,
|
24
|
+
after: /group :development do\n/
|
25
|
+
|
26
|
+
Bundler.with_unbundled_env { run "bundle install" }
|
27
|
+
end
|
28
|
+
|
29
|
+
def configure_rack_mini_profiler
|
30
|
+
say "Configuring rack mini profiler", :green
|
31
|
+
|
32
|
+
Bundler.with_unbundled_env do
|
33
|
+
run "bundle exec rails g rack_mini_profiler:install"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'boring_generators/generator_helper'
|
4
|
+
|
5
|
+
module Boring
|
6
|
+
module RailsErd
|
7
|
+
class InstallGenerator < Rails::Generators::Base
|
8
|
+
include BoringGenerators::GeneratorHelper
|
9
|
+
|
10
|
+
desc 'Adds rails-erd gem to the app for generating ERD diagrams'
|
11
|
+
|
12
|
+
def add_rails_erd_gem
|
13
|
+
if gem_installed?("rails-erd")
|
14
|
+
say "rails-erd is already in the Gemfile, skipping it ...", :yellow
|
15
|
+
else
|
16
|
+
say "Adding rails-erd gem", :green
|
17
|
+
gem_content = <<~RUBY
|
18
|
+
\n
|
19
|
+
\tgem "rails-erd"
|
20
|
+
RUBY
|
21
|
+
insert_into_file "Gemfile", gem_content, after: /group :development do/
|
22
|
+
bundle_install
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def configure_rails_erd_gem
|
27
|
+
say 'Configuring rails-erd gem', :green
|
28
|
+
|
29
|
+
Bundler.with_unbundled_env do
|
30
|
+
run 'bundle exec rails g erd:install'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Sentry
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path("templates", __dir__)
|
7
|
+
desc 'Adds Sentry to the app'
|
8
|
+
|
9
|
+
class_option :use_env_variable, type: :boolean, aliases: '-ev',
|
10
|
+
desc: 'Use ENV variable for Sentry. By default Rails credentials will be used.'
|
11
|
+
class_option :breadcrumbs_logger, type: :array, aliases: '-bl', default: [:active_support_logger, :http_logger],
|
12
|
+
desc: 'Set the breadcrumbs logger. By default [:active_support_logger, :http_logger] will be used.'
|
13
|
+
|
14
|
+
def add_sentry_gems
|
15
|
+
say 'Adding Sentry gem', :green
|
16
|
+
|
17
|
+
Bundler.with_unbundled_env do
|
18
|
+
run 'bundle add sentry-ruby sentry-rails'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def configure_sentry_gem
|
23
|
+
say 'Configuring Sentry gem', :green
|
24
|
+
|
25
|
+
@sentry_dsn_key = sentry_dsn_key
|
26
|
+
@breadcrumbs_logger_options = options[:breadcrumbs_logger].map(&:to_sym)
|
27
|
+
|
28
|
+
template 'sentry.rb', 'config/initializers/sentry.rb'
|
29
|
+
|
30
|
+
show_alert_message
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def sentry_dsn_key
|
36
|
+
if options[:use_env_variable]
|
37
|
+
"ENV['SENTRY_DSN_KEY']"
|
38
|
+
else
|
39
|
+
"Rails.application.credentials.dig(:sentry, :dsn_key)"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def show_alert_message
|
44
|
+
say "❗️❗️\nThe DSN key for Sentry will be used from `#{sentry_dsn_key}`. You can change this value if it doesn't match with your app.\n", :yellow
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|