boring_generators 0.13.0 → 0.15.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 +83 -49
- data/Gemfile.lock +2 -2
- data/README.md +14 -0
- data/lib/boring_generators/generator_helper.rb +46 -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/ci/gitlab_ci/install/install_generator.rb +120 -0
- data/lib/generators/boring/ci/gitlab_ci/install/templates/README +10 -0
- data/lib/generators/boring/ci/gitlab_ci/install/templates/capybara_helper.rb.tt +42 -0
- data/lib/generators/boring/ci/gitlab_ci/install/templates/ci.yml.tt +94 -0
- data/lib/generators/boring/ci/gitlab_ci/install/templates/database.yml.ci.tt +20 -0
- data/lib/generators/boring/ci/gitlab_ci/install/templates/system_sample_spec.rb.tt +14 -0
- data/lib/generators/boring/ci/gitlab_ci/install/templates/system_sample_test.rb.tt +13 -0
- data/lib/generators/boring/ci/gitlab_ci/install/templates/unit_sample_spec.rb.tt +7 -0
- data/lib/generators/boring/ci/gitlab_ci/install/templates/unit_sample_test.rb.tt +7 -0
- data/lib/generators/boring/devise/doorkeeper/install/install_generator.rb +190 -0
- data/lib/generators/boring/devise/install/install_generator.rb +42 -9
- 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 +126 -0
- data/lib/generators/boring/vcr/install/templates/rspec/vcr.rb.tt +9 -0
- data/lib/generators/boring/webmock/install/install_generator.rb +7 -6
- metadata +34 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69a40221e1b2d89fde7e887f6f0b92f8d972548c000b363b4eab025f613844bc
|
4
|
+
data.tar.gz: c0f61c22deabdb64366d9d11b9e01f8cd6f09ca6b576f01342c0c455e70325ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65ac7ade20d72cc641bda7282f66fca33e330ff891fad2f4eaffce20914a0776e02e7afba1da2553308c54b56bd46362e1dd3c0c76ddae36c632013b72f36dc8
|
7
|
+
data.tar.gz: fc30ecc6102379477e7c05a97657318ed2e22560acf3098154a1da45d9d0ad2426677caa90a86e755b7a2080f0183be92f345aada6f89f8b39d923a61bbf4208
|
data/CHANGELOG.md
CHANGED
@@ -2,81 +2,113 @@
|
|
2
2
|
|
3
3
|
## master (unreleased)
|
4
4
|
|
5
|
+
## 0.15.0 (Aug 4th, 2024)
|
6
|
+
|
7
|
+
* Adds Gitlab CI generator. ([@coolprobn][])
|
8
|
+
|
9
|
+
## 0.14.0 (Aug 4th, 2024)
|
10
|
+
|
11
|
+
- Adds Figjam generator. ([@mausamp][])
|
12
|
+
- Adds Pronto Generator with Gitlab CI ([@coolprobn][])
|
13
|
+
- Adds Rack Mini Profiler generator. ([@mausamp][])
|
14
|
+
- Adds VCR generator. ([@TheZero0-ctrl][])
|
15
|
+
- Adds Pronto Generator with Gihub Action. ([@TheZero0-ctrl][])
|
16
|
+
- Adds Doorkeeper Generator with Devise. ([@TheZero0-ctrl][])
|
17
|
+
- Adds Avo generator. ([@mausamp][])
|
18
|
+
- Adds Sentry generator. ([@mausamp][])
|
19
|
+
- Adds Dotenv generator. ([@mausamp][])
|
20
|
+
- Adds Honeybadger generator. ([@mausamp][])
|
21
|
+
- Adds Rails ERD generator. ([@mausamp][])
|
22
|
+
- Adds Annotate Generator. ([@TheZero0-ctrl][])
|
23
|
+
- Adds CanCanCan generator. ([@TheZero0-ctrl][])
|
24
|
+
|
5
25
|
## 0.13.0 (March 26th, 2024)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
26
|
+
|
27
|
+
- Adds Letter Opener generator. ([@coolprobn][])
|
28
|
+
- Adds Whenever generator. ([@aadil][])
|
29
|
+
- Adds Rswag generator. ([@coolprobn][])
|
30
|
+
- Adds Webmock generator. ([@aadil][])
|
10
31
|
|
11
32
|
## 0.12.0 (May 8th, 2023)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
33
|
+
|
34
|
+
- Adds Flipper generator. ([@abhaynikam][])
|
35
|
+
- Adds FactoryBot generator. ([@abhaynikam][])
|
36
|
+
- Adds Faker generator. ([@abhaynikam][])
|
37
|
+
- Adds RSpec generator. ([@abhaynikam][])
|
38
|
+
- Update default node-version for GitHub Action generator and fixes PG setup issues. ([@abhaynikam][])
|
39
|
+
- Updates Bootstrap generator for supporting Bootstrap 5 with popper.js. ([@abhaynikam][])
|
40
|
+
- Adds Overcommit generator for RuboCop. ([@coolprobn][])
|
41
|
+
- Updates RuboCop generator to add rubocop-rake extension and support test frameworks ([@coolprobn][])
|
20
42
|
|
21
43
|
## 0.11.0 (June 23rd, 2021)
|
22
|
-
|
23
|
-
|
24
|
-
|
44
|
+
|
45
|
+
- Adds Stimulus generator. ([@abhaynikam][])
|
46
|
+
- Adds Rails Admin generator. ([@abhaynikam][])
|
47
|
+
- Adds Paper Trail generator. ([@abhaynikam][])
|
25
48
|
|
26
49
|
## 0.10.0 (May 26th, 2021)
|
27
|
-
|
28
|
-
|
50
|
+
|
51
|
+
- Updates Stripe payment generator. ([@abhaynikam][])
|
52
|
+
- Fixes many generators which install ruby gems to not hardcode gem version. ([@abhaynikam][])
|
29
53
|
|
30
54
|
## 0.9.0 (April 14th, 2021)
|
31
|
-
|
32
|
-
|
55
|
+
|
56
|
+
- Adds Ahoy generator. ([@abhaynikam][])
|
57
|
+
- Adds Stripe payment generator. ([@abhaynikam][])
|
33
58
|
|
34
59
|
## 0.8.0 (February 28th, 2021)
|
35
|
-
|
36
|
-
|
37
|
-
|
60
|
+
|
61
|
+
- Adds Devise Google Omniauth generator. ([@abhaynikam][])
|
62
|
+
- Adds Devise Twitter Omniauth generator. ([@abhaynikam][])
|
63
|
+
- Adds Twilio generator. ([@abhaynikam][])
|
38
64
|
|
39
65
|
## 0.7.0 (January 30th, 2021)
|
40
|
-
|
41
|
-
|
66
|
+
|
67
|
+
- Upgrade the Tailwind CSS generator to support Tailwind V2.0. ([@abhaynikam][])
|
68
|
+
- Adds Devise GitHub Omniauth generator. ([@abhaynikam][])
|
42
69
|
|
43
70
|
## 0.6.0 (January 10th, 2021)
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
71
|
+
|
72
|
+
- Updates default ruby version of GitHub Actions install generator. ([@jamesglover][])
|
73
|
+
- Simplify generated GitHub Actions install ([@jamesglover][])
|
74
|
+
- Adds boring generator CLI ([@luathn][])
|
75
|
+
- Adds Devise Facebook Omniauth generator. ([@abhaynikam][])
|
48
76
|
|
49
77
|
## 0.5.0 (December 20th, 2020)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
78
|
+
|
79
|
+
- Adds favicon build generator. ([@abhaynikam][])
|
80
|
+
- Adds Pundit install generator. ([@CiTroNaK][])
|
81
|
+
- Adds GraphQL generator. ([@abhaynikam][])
|
82
|
+
- Adds SimpleForm generator. ([@abhaynikam][])
|
83
|
+
- Adds Devise generator. ([@abhaynikam][])
|
55
84
|
|
56
85
|
## 0.4.0 (October 23rd, 2020)
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
86
|
+
|
87
|
+
- Adds CircleCI install generator. ([@abhaynikam][])
|
88
|
+
- Adds GitHub Actions install generator. ([@abhaynikam][])
|
89
|
+
- Adds Travis CI install generator. ([@abhaynikam][])
|
90
|
+
- Adds Rubocop install generator. ([@abhaynikam][])
|
61
91
|
|
62
92
|
## 0.3.0 (September 19th, 2020)
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
93
|
+
|
94
|
+
- Adds Bullet install generator. ([@abhaynikam][])
|
95
|
+
- Adds Audit gems(bundler-audit, ruby_audit) install generator. ([@abhaynikam][])
|
96
|
+
- Adds Pry install generator. ([@abhaynikam][])
|
97
|
+
- Adds Active Storage Google install generator. ([@abhaynikam][])
|
98
|
+
- Adds Active Storage AWS install generator. ([@abhaynikam][])
|
99
|
+
- Adds Active Storage Microsoft Azure install generator. ([@abhaynikam][])
|
69
100
|
|
70
101
|
## 0.2.0 (September 16th, 2020)
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
102
|
+
|
103
|
+
- Adds JQuery install generator. ([@abhaynikam][])
|
104
|
+
- Adds Bootstrap install generator. ([@abhaynikam][])
|
105
|
+
- Adds FontAwesome install generator via Yarn. ([@abhaynikam][])
|
106
|
+
- Adds FontAwesome install generator via RubyGems. ([@abhaynikam][])
|
75
107
|
|
76
108
|
## 0.1.0 (September 5th, 2020)
|
77
109
|
|
78
|
-
|
79
|
-
|
110
|
+
- Adds Tailwind CSS install generator. ([@abhaynikam][])
|
111
|
+
- Initial release. ([@abhaynikam][])
|
80
112
|
|
81
113
|
[@abhaynikam]: https://github.com/abhaynikam
|
82
114
|
[@CiTroNaK]: https://github.com/CiTroNaK
|
@@ -84,3 +116,5 @@
|
|
84
116
|
[@luathn]: https://github.com/luathn
|
85
117
|
[@coolprobn]: https://github.com/coolprobn
|
86
118
|
[@aadil]: https://github.com/AdilRT
|
119
|
+
[@mausamp]: https://github.com/mausamp
|
120
|
+
[@TheZero0-ctrl]: https://github.com/TheZero0-ctrl
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -84,6 +84,20 @@ The boring generator introduces following generators:
|
|
84
84
|
- Install Whenever: `rails generate boring:whenever:install`
|
85
85
|
- Install Rswag: `rails generate boring:rswag:install --rails_port=<rails_app_port> --authentication_type=<api_authentication_type> --skip_api_authentication=<skip_api_authentication> --api_authentication_options=<api_authentication_options> --enable_swagger_ui_authentication=<enable_swagger_ui_authentication>`
|
86
86
|
- Install Webmock: `rails generate boring:webmock:install --app_test_framework=<test_framework>`
|
87
|
+
- Install Figjam: `rails generate boring:figjam:install`
|
88
|
+
- Install Pronto with Gitlab CI: `rails generate boring:pronto:gitlab_ci:install`
|
89
|
+
- Install Pronto with Github Action: `rails generate boring:pronto:github_action:install`
|
90
|
+
- Install Rack Mini Profiler: `rails generate boring:rack_mini_profiler:install`
|
91
|
+
- Install VCR: `rails generate boring:vcr:install --testing_framework=<testing_framework> --stubbing_libraries=<stubbing_libraries>`
|
92
|
+
- Install Avo: `rails generate boring:avo:install`
|
93
|
+
- Install Doorkeeper with devise: `rails generate boring:devise:doorkeeper:install`
|
94
|
+
- Install Sentry: `rails generate boring:sentry:install --use_env_variable --breadcrumbs_logger=<breadcrumbs_logger_options>`
|
95
|
+
- Install Dotenv: `rails generate boring:dotenv:install`
|
96
|
+
- Install Honeybadger: `rails generate boring:honeybadger:install`
|
97
|
+
- Install Rails ERD: `rails generate boring:rails_erd:install`
|
98
|
+
- Install Annotate: `rails generate boring:annotate:install`
|
99
|
+
- Install CanCanCan: `rails generate boring:cancancan:install`
|
100
|
+
- Install Gitlab CI: `rails generate boring:ci:gitlab_ci:install`
|
87
101
|
|
88
102
|
## Screencasts
|
89
103
|
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module BoringGenerators
|
2
|
+
module GeneratorHelper
|
3
|
+
include Rails::Generators::Actions
|
4
|
+
|
5
|
+
def app_ruby_version
|
6
|
+
with_ruby_string = File.read("Gemfile")[/^ruby\s+["']?([\d.]+)["']?/] || File.read(".ruby-version").strip
|
7
|
+
|
8
|
+
# only keep 3.3.0 from ruby-3.3.0
|
9
|
+
with_ruby_string.gsub(/[^\d\.]/, "").squish
|
10
|
+
end
|
11
|
+
|
12
|
+
def gem_installed?(gem_name)
|
13
|
+
gem_regex = /^\s*gem\s*['"]#{gem_name}['"]/
|
14
|
+
|
15
|
+
File.read("Gemfile").match?(gem_regex)
|
16
|
+
end
|
17
|
+
|
18
|
+
def bundle_install
|
19
|
+
Bundler.with_unbundled_env { run "bundle install" }
|
20
|
+
end
|
21
|
+
|
22
|
+
def check_and_install_gem(*args)
|
23
|
+
gem_name, = args
|
24
|
+
|
25
|
+
if gem_installed?(gem_name)
|
26
|
+
say "#{gem_name} is already in the Gemfile, skipping it...", :yellow
|
27
|
+
else
|
28
|
+
gem *args unless gem_installed?(gem_name)
|
29
|
+
end
|
30
|
+
|
31
|
+
bundle_install
|
32
|
+
end
|
33
|
+
|
34
|
+
def inject_into_file_if_new(*args)
|
35
|
+
file_name, content_to_add, = args
|
36
|
+
|
37
|
+
file_content = File.read(file_name)
|
38
|
+
|
39
|
+
content_exists = file_content.include?(content_to_add)
|
40
|
+
|
41
|
+
return if content_exists
|
42
|
+
|
43
|
+
inject_into_file *args
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -2,7 +2,7 @@ module Boring
|
|
2
2
|
module ActiveStorage
|
3
3
|
module Azure
|
4
4
|
class InstallGenerator < Rails::Generators::Base
|
5
|
-
desc "Adds ActiveStorage
|
5
|
+
desc "Adds ActiveStorage Microsoft Azure the application"
|
6
6
|
|
7
7
|
class_option :skip_active_storage, type: :boolean, aliases: "-s",
|
8
8
|
desc: "Skips running ActiveStorage installer"
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'boring_generators/generator_helper'
|
4
|
+
|
5
|
+
module Boring
|
6
|
+
module Annotate
|
7
|
+
class InstallGenerator < Rails::Generators::Base
|
8
|
+
include BoringGenerators::GeneratorHelper
|
9
|
+
|
10
|
+
desc "Adds Annotate gem to the application"
|
11
|
+
|
12
|
+
class_option :skip_on_db_migrate,
|
13
|
+
type: :boolean,
|
14
|
+
alias: "-sm",
|
15
|
+
default: false,
|
16
|
+
desc: "Skip annotate on db:migrate. Defaults to false"
|
17
|
+
|
18
|
+
def add_annotate_gem
|
19
|
+
if gem_installed?("annotate")
|
20
|
+
say "annotate is already in the Gemfile, skipping it ...", :yellow
|
21
|
+
else
|
22
|
+
say "Adding annotate gem", :green
|
23
|
+
gem_content = <<~RUBY
|
24
|
+
\n
|
25
|
+
\tgem "annotate"
|
26
|
+
RUBY
|
27
|
+
insert_into_file "Gemfile", gem_content, after: /group :development do/
|
28
|
+
bundle_install
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def configure_annotate
|
33
|
+
say "Configuring annotate", :green
|
34
|
+
|
35
|
+
Bundler.with_unbundled_env do
|
36
|
+
run "bundle exec rails g annotate:install"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def update_auto_annotate_models_rake
|
41
|
+
return unless options[:skip_on_db_migrate]
|
42
|
+
|
43
|
+
say "Setting skip_on_db_migrate to false on file 'lib/tasks/auto_annotate_models.rake'",
|
44
|
+
:green
|
45
|
+
|
46
|
+
gsub_file "lib/tasks/auto_annotate_models.rake",
|
47
|
+
"'skip_on_db_migrate' => 'false'",
|
48
|
+
"'skip_on_db_migrate' => 'true'"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -13,7 +13,7 @@ module Boring
|
|
13
13
|
\n
|
14
14
|
\t# Patch-level verification for Bundler. https://github.com/rubysec/bundler-audit
|
15
15
|
\tgem "bundler-audit", require: false
|
16
|
-
\t#
|
16
|
+
\t# vulnerability checker for Ruby itself. https://github.com/civisanalytics/ruby_audit
|
17
17
|
\tgem "ruby_audit", require: false
|
18
18
|
RUBY
|
19
19
|
insert_into_file "Gemfile", audit_gems_content, after: /group :development do/
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Avo
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
desc 'Adds Avo to the application'
|
7
|
+
|
8
|
+
def add_avo_gem
|
9
|
+
say 'Adding Avo gem', :green
|
10
|
+
|
11
|
+
Bundler.with_unbundled_env do
|
12
|
+
run 'bundle add avo'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def configure_avo
|
17
|
+
say 'Setting up Avo', :green
|
18
|
+
|
19
|
+
Bundler.with_unbundled_env do
|
20
|
+
run 'bundle exec rails generate avo:install'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'boring_generators/generator_helper'
|
4
|
+
|
5
|
+
module Boring
|
6
|
+
module Cancancan
|
7
|
+
class InstallGenerator < Rails::Generators::Base
|
8
|
+
include BoringGenerators::GeneratorHelper
|
9
|
+
|
10
|
+
desc "Adds cancancan gem to the application"
|
11
|
+
|
12
|
+
class_option :skip_config,
|
13
|
+
type: :boolean,
|
14
|
+
default: false,
|
15
|
+
desc: "Skip adding cancancan configuration. Default to false"
|
16
|
+
|
17
|
+
def add_cancancan_gem
|
18
|
+
say "Adding cancancan gem", :green
|
19
|
+
check_and_install_gem("cancancan")
|
20
|
+
bundle_install
|
21
|
+
end
|
22
|
+
|
23
|
+
def configure_cancancan
|
24
|
+
return if options[:skip_config]
|
25
|
+
|
26
|
+
say "Configuring cancancan", :green
|
27
|
+
|
28
|
+
Bundler.with_unbundled_env do
|
29
|
+
run "bundle exec rails g cancan:ability"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "boring_generators/generator_helper"
|
4
|
+
|
5
|
+
module Boring
|
6
|
+
module Ci
|
7
|
+
module GitlabCi
|
8
|
+
class InstallGenerator < Rails::Generators::Base
|
9
|
+
desc "Adds Gitlab CI to the application"
|
10
|
+
source_root File.expand_path("templates", __dir__)
|
11
|
+
|
12
|
+
class_option :ruby_version,
|
13
|
+
aliases: "-rv",
|
14
|
+
type: :string,
|
15
|
+
desc:
|
16
|
+
"Ruby version used by your app. Defaults to .ruby_version or the version specified in your Gemfile."
|
17
|
+
class_option :app_test_framework,
|
18
|
+
aliases: "-tf",
|
19
|
+
type: :string,
|
20
|
+
enum: %w[minitest rspec],
|
21
|
+
default: "minitest",
|
22
|
+
desc:
|
23
|
+
"Tell us the test framework you use for the application. Defaults to Minitest."
|
24
|
+
class_option :environment_variable_manager,
|
25
|
+
aliases: "-evm",
|
26
|
+
type: :string,
|
27
|
+
enum: %w[rails_credentials dotenv figjam],
|
28
|
+
default: "rails_credentials",
|
29
|
+
desc:
|
30
|
+
"Tell us the environment variable manager you use. Defaults to Rails Credentials"
|
31
|
+
class_option :database,
|
32
|
+
aliases: "-d",
|
33
|
+
type: :string,
|
34
|
+
enum: %w[sqlite3 postgresql mysql],
|
35
|
+
default: "sqlite3",
|
36
|
+
desc: "Tell us the database you use in your app"
|
37
|
+
class_option :skip_sample_tests,
|
38
|
+
aliases: "-stt",
|
39
|
+
type: :boolean,
|
40
|
+
default: false,
|
41
|
+
desc:
|
42
|
+
"Skip sample tests. Useful when you are configuring Gitlab CI for existing Rails app"
|
43
|
+
|
44
|
+
include BoringGenerators::GeneratorHelper
|
45
|
+
|
46
|
+
def add_gitlab_ci_configurations
|
47
|
+
@ruby_version = options[:ruby_version] || app_ruby_version
|
48
|
+
@app_test_framework = options[:app_test_framework]
|
49
|
+
@environment_variable_manager = options[:environment_variable_manager]
|
50
|
+
@database = options[:database]
|
51
|
+
|
52
|
+
template("ci.yml", ".gitlab-ci.yml")
|
53
|
+
template("database.yml.ci", "config/database.yml.ci")
|
54
|
+
end
|
55
|
+
|
56
|
+
def add_gems_for_system_test
|
57
|
+
check_and_install_gem "capybara", group: :test
|
58
|
+
check_and_install_gem "selenium-webdriver", group: :test
|
59
|
+
end
|
60
|
+
|
61
|
+
def add_capybara_configurations
|
62
|
+
if options[:app_test_framework] == "minitest"
|
63
|
+
template("capybara_helper.rb", "test/helpers/capybara.rb")
|
64
|
+
|
65
|
+
inject_into_file_if_new "test/application_system_test_case.rb",
|
66
|
+
"require \"helpers/capybara\"\n",
|
67
|
+
before: "class ApplicationSystemTestCase"
|
68
|
+
gsub_file "test/application_system_test_case.rb",
|
69
|
+
/driven_by :selenium, using: :(?:chrome|headless_chrome).*\n/,
|
70
|
+
"driven_by :selenium_chrome_custom"
|
71
|
+
|
72
|
+
capybara_setup = <<-RUBY
|
73
|
+
\n
|
74
|
+
def setup
|
75
|
+
Capybara.server_host = "0.0.0.0" # bind to all interfaces
|
76
|
+
Capybara.server_port = 3000
|
77
|
+
|
78
|
+
if ENV["SELENIUM_REMOTE_URL"].present?
|
79
|
+
ip = Socket.ip_address_list.detect(&:ipv4_private?).ip_address
|
80
|
+
Capybara.app_host = "http://\#{ip}:\#{Capybara.server_port}"
|
81
|
+
end
|
82
|
+
|
83
|
+
super
|
84
|
+
end
|
85
|
+
RUBY
|
86
|
+
|
87
|
+
inject_into_file_if_new "test/application_system_test_case.rb",
|
88
|
+
optimize_indentation(
|
89
|
+
capybara_setup,
|
90
|
+
amount = 2
|
91
|
+
),
|
92
|
+
after: "driven_by :selenium_chrome_custom"
|
93
|
+
else
|
94
|
+
template("capybara_helper.rb", "spec/support/capybara.rb")
|
95
|
+
|
96
|
+
inject_into_file_if_new "spec/rails_helper.rb",
|
97
|
+
"require_relative \"./support/capybara\"\n\n",
|
98
|
+
before: "RSpec.configure do |config|"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def add_sample_tests
|
103
|
+
return if options[:skip_sample_tests]
|
104
|
+
|
105
|
+
if options[:app_test_framework] == "minitest"
|
106
|
+
template("unit_sample_test.rb", "test/models/sample_test.rb")
|
107
|
+
template("system_sample_test.rb", "test/system/sample_test.rb")
|
108
|
+
else
|
109
|
+
template("unit_sample_spec.rb", "spec/models/sample_spec.rb")
|
110
|
+
template("system_sample_spec.rb", "spec/system/sample_spec.rb")
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def show_readme
|
115
|
+
readme "README"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
|
2
|
+
===============================================================================
|
3
|
+
|
4
|
+
You need to update your project's Gitlab CI variable configurations for the Gitlab CI to work correctly. Please take care of the following:
|
5
|
+
|
6
|
+
- Add your Gitlab personal access token under the variable `PRONTO_ACCESS_TOKEN`
|
7
|
+
- Copy your application's environment variables under `env` variable in CI/CD
|
8
|
+
- Add your Master Key required for decoding secret values under the variable `MASTER_KEY`
|
9
|
+
|
10
|
+
===============================================================================
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "selenium-webdriver"
|
2
|
+
|
3
|
+
Capybara.register_driver :selenium_chrome_custom do |app|
|
4
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
5
|
+
|
6
|
+
options.add_argument("--headless=new") unless ENV["SELENIUM_HEADFUL"]
|
7
|
+
|
8
|
+
options.add_argument("--window-size=1400,1400")
|
9
|
+
options.add_argument("--no-sandbox")
|
10
|
+
options.add_argument("--disable-dev-shm-usage")
|
11
|
+
|
12
|
+
remote_url = ENV.fetch("SELENIUM_REMOTE_URL", nil)
|
13
|
+
|
14
|
+
if remote_url
|
15
|
+
Capybara::Selenium::Driver.new(
|
16
|
+
app,
|
17
|
+
browser: :remote,
|
18
|
+
url: remote_url,
|
19
|
+
options:
|
20
|
+
)
|
21
|
+
else
|
22
|
+
Capybara::Selenium::Driver.new(app, browser: :chrome, options:)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
<%- if @app_test_framework == "rspec" -%>
|
27
|
+
RSpec.configure do |config|
|
28
|
+
config.before(:each, type: :system, js: true) do
|
29
|
+
# Make the test app listen to outside requests, required for the remote Selenium instance
|
30
|
+
Capybara.server_host = "0.0.0.0"
|
31
|
+
Capybara.server_port = 3000
|
32
|
+
|
33
|
+
if ENV.fetch("SELENIUM_REMOTE_URL", nil)
|
34
|
+
# Use the application container's IP instead of localhost so Capybara knows where to direct Selenium
|
35
|
+
ip = Socket.ip_address_list.detect(&:ipv4_private?).ip_address
|
36
|
+
Capybara.app_host = "http://#{ip}:#{Capybara.server_port}"
|
37
|
+
end
|
38
|
+
|
39
|
+
driven_by :selenium_chrome_custom
|
40
|
+
end
|
41
|
+
end
|
42
|
+
<%- end -%>
|