boring_generators 0.1.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +12 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +11 -0
- data/.github/workflows/ci.yml +17 -0
- data/CHANGELOG.md +36 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +148 -0
- data/README.md +52 -6
- data/boring_generators.gemspec +3 -1
- data/exe/boring +5 -0
- data/lib/boring_generators.rb +1 -0
- data/lib/boring_generators/cli.rb +26 -0
- data/lib/boring_generators/version.rb +1 -1
- data/lib/generators/boring/active_storage/aws/install/install_generator.rb +48 -0
- data/lib/generators/boring/active_storage/azure/install/install_generator.rb +48 -0
- data/lib/generators/boring/active_storage/google/install/install_generator.rb +48 -0
- data/lib/generators/boring/audit/install/install_generator.rb +22 -0
- data/lib/generators/boring/bootstrap/install/install_generator.rb +67 -0
- data/lib/generators/boring/bootstrap/install/templates/application.scss +1 -0
- data/lib/generators/boring/bullet/install/install_generator.rb +31 -0
- data/lib/generators/boring/bullet/install/templates/bullet.rb +8 -0
- data/lib/generators/boring/ci/circleci/install/install_generator.rb +31 -0
- data/lib/generators/boring/ci/circleci/install/templates/config.psql.yml.tt +48 -0
- data/lib/generators/boring/ci/circleci/install/templates/config.sql.yml.tt +48 -0
- data/lib/generators/boring/ci/circleci/install/templates/database.yml.ci.tt +14 -0
- data/lib/generators/boring/ci/github_action/install/install_generator.rb +45 -0
- data/lib/generators/boring/ci/github_action/install/templates/ci.yml.tt +49 -0
- data/lib/generators/boring/ci/travisci/install/install_generator.rb +23 -0
- data/lib/generators/boring/ci/travisci/install/templates/.travis.yml.tt +35 -0
- data/lib/generators/boring/devise/install/install_generator.rb +75 -0
- data/lib/generators/boring/favicon/build/build_generator.rb +120 -0
- data/lib/generators/boring/favicon/build/templates/favicon.html.erb.tt +19 -0
- data/lib/generators/boring/font_awesome/ruby_gem/install/install_generator.rb +42 -0
- data/lib/generators/boring/font_awesome/yarn/install/install_generator.rb +53 -0
- data/lib/generators/boring/font_awesome/yarn/install/templates/application.scss +1 -0
- data/lib/generators/boring/graphql/install/install_generator.rb +51 -0
- data/lib/generators/boring/graphql/install/templates/base_resolver.rb +2 -0
- data/lib/generators/boring/graphql/install/templates/hello_world_resolver.rb +11 -0
- data/lib/generators/boring/jquery/install/install_generator.rb +32 -0
- data/lib/generators/boring/oauth/facebook/install/install_generator.rb +91 -0
- data/lib/generators/boring/oauth/facebook/install/templates/README +24 -0
- data/lib/generators/boring/oauth/facebook/install/templates/omniauth.rb +3 -0
- data/lib/generators/boring/oauth/facebook/install/templates/omniauth_callbacks_controller.rb +21 -0
- data/lib/generators/boring/pry/install/install_generator.rb +29 -0
- data/lib/generators/boring/pry/install/templates/pryrc +24 -0
- data/lib/generators/boring/pundit/install/install_generator.rb +85 -0
- data/lib/generators/boring/rubocop/install/install_generator.rb +37 -0
- data/lib/generators/boring/rubocop/install/templates/.rubocop.yml.tt +262 -0
- data/lib/generators/boring/simple_form/install/install_generator.rb +44 -0
- data/lib/generators/boring/tailwind/install/install_generator.rb +28 -20
- metadata +2527 -6
- data/.travis.yml +0 -6
@@ -0,0 +1,48 @@
|
|
1
|
+
module Boring
|
2
|
+
module ActiveStorage
|
3
|
+
module Azure
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
5
|
+
desc "Adds ActiveStorage Mircosoft Azure the application"
|
6
|
+
|
7
|
+
class_option :skip_active_storage, type: :boolean, aliases: "-s",
|
8
|
+
desc: "Skips running ActiveStorage installer"
|
9
|
+
|
10
|
+
def add_active_storage
|
11
|
+
unless options[:skip_active_storage]
|
12
|
+
say "Adding ActiveStorage", :green
|
13
|
+
run "bin/rails active_storage:install"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_azure_to_the_application
|
18
|
+
say "Adding mircosoft azure gem", :green
|
19
|
+
azure_gem_content = <<~RUBY
|
20
|
+
\n
|
21
|
+
# for Azure Service
|
22
|
+
gem "azure-storage-blob", require: false
|
23
|
+
RUBY
|
24
|
+
append_to_file "Gemfile", azure_gem_content
|
25
|
+
run "bundle install"
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_configuration_to_production
|
29
|
+
gsub_file "config/environments/production.rb",
|
30
|
+
"config.active_storage.service = :local",
|
31
|
+
"config.active_storage.service = :microsoft"
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_azure_storage_configuration
|
35
|
+
microsoft_storage_config_content = <<~RUBY
|
36
|
+
microsoft:
|
37
|
+
service: AzureStorage
|
38
|
+
storage_account_name: your_account_name
|
39
|
+
storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
|
40
|
+
container: your_container_name
|
41
|
+
RUBY
|
42
|
+
|
43
|
+
append_to_file "config/storage.yml", microsoft_storage_config_content
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Boring
|
2
|
+
module ActiveStorage
|
3
|
+
module Google
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
5
|
+
desc "Adds ActiveStorage google cloud service the application"
|
6
|
+
|
7
|
+
class_option :skip_active_storage, type: :boolean, aliases: "-s",
|
8
|
+
desc: "Skips running ActiveStorage installer"
|
9
|
+
|
10
|
+
def add_active_storage
|
11
|
+
unless options[:skip_active_storage]
|
12
|
+
say "Adding ActiveStorage", :green
|
13
|
+
run "bin/rails active_storage:install"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_google_cloud_storage_to_the_application
|
18
|
+
say "Adding google cloud storage gem", :green
|
19
|
+
google_cloud_storage_gem_content = <<~RUBY
|
20
|
+
\n
|
21
|
+
# for Google Cloud Storage Service
|
22
|
+
gem "google-cloud-storage", require: false
|
23
|
+
RUBY
|
24
|
+
append_to_file "Gemfile", google_cloud_storage_gem_content
|
25
|
+
run "bundle install"
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_configuration_to_production
|
29
|
+
gsub_file "config/environments/production.rb",
|
30
|
+
"config.active_storage.service = :local",
|
31
|
+
"config.active_storage.service = :google"
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_google_storage_configuration
|
35
|
+
google_storage_config_content = <<~RUBY
|
36
|
+
google:
|
37
|
+
service: GCS
|
38
|
+
project: your_project
|
39
|
+
credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
|
40
|
+
bucket: your_own_bucket
|
41
|
+
RUBY
|
42
|
+
|
43
|
+
append_to_file "config/storage.yml", google_storage_config_content
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Audit
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
desc "Adds Audit gems to the application"
|
7
|
+
|
8
|
+
def add_bullet_gem
|
9
|
+
say "Adding audit gems", :green
|
10
|
+
audit_gems_content = <<~RUBY
|
11
|
+
\n
|
12
|
+
\t# Patch-level verification for Bundler. https://github.com/rubysec/bundler-audit
|
13
|
+
\tgem "bundler-audit", require: false
|
14
|
+
\t# vulnerabity checker for Ruby itself. https://github.com/civisanalytics/ruby_audit
|
15
|
+
\tgem "ruby_audit", require: false
|
16
|
+
RUBY
|
17
|
+
insert_into_file "Gemfile", audit_gems_content, after: /group :development do/
|
18
|
+
run "bundle install"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Bootstrap
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
desc "Adds Bootstrap to the application"
|
7
|
+
source_root File.expand_path("templates", __dir__)
|
8
|
+
|
9
|
+
def add_bootstrap_package
|
10
|
+
say "Adding bootstrap packages", :green
|
11
|
+
run "yarn add bootstrap jquery popper.js"
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_jquery_plugin_provider_to_webpack_environment
|
15
|
+
say "Adding jQuery and popper JS plugin in the webpack", :green
|
16
|
+
if File.exist?("config/webpack/environment.js")
|
17
|
+
insert_into_file "config/webpack/environment.js", <<~RUBY, after: /@rails\/webpacker.*\n/
|
18
|
+
const webpack = require("webpack")
|
19
|
+
|
20
|
+
environment.plugins.append("Provide", new webpack.ProvidePlugin({
|
21
|
+
$: 'jquery',
|
22
|
+
jQuery: 'jquery',
|
23
|
+
Popper: ['popper.js', 'default']
|
24
|
+
}))
|
25
|
+
RUBY
|
26
|
+
else
|
27
|
+
say <<~WARNING, :red
|
28
|
+
ERROR: Looks like the webpacker installation is incomplete. Could not find environment.js in config/webpack.
|
29
|
+
WARNING
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_or_import_stylesheet_for_bootstrap
|
34
|
+
if File.exist?("app/javascript/stylesheets/application.scss")
|
35
|
+
say "Add bootstrap imports to the application.scss", :green
|
36
|
+
append_to_file "app/javascript/stylesheets/application.scss" do
|
37
|
+
'@import "~bootstrap/scss/bootstrap";'
|
38
|
+
end
|
39
|
+
else
|
40
|
+
say "Copying application.scss with bootstrap imports", :green
|
41
|
+
template("application.scss", "app/javascript/stylesheets/application.scss")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def insert_stylesheet_in_the_application
|
46
|
+
if File.exist?("app/javascript/packs/application.js")
|
47
|
+
application_js_content = <<~RUBY
|
48
|
+
\n
|
49
|
+
import "bootstrap"
|
50
|
+
import "stylesheets/application"
|
51
|
+
RUBY
|
52
|
+
append_to_file "app/javascript/packs/application.js", application_js_content
|
53
|
+
else
|
54
|
+
say <<~WARNING, :red
|
55
|
+
ERROR: Looks like the webpacker installation is incomplete. Could not find application.js in app/javascript/packs.
|
56
|
+
WARNING
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def insert_stylesheet_packs_tag
|
61
|
+
insert_into_file "app/views/layouts/application.html.erb", <<~RUBY, after: /stylesheet_link_tag.*\n/
|
62
|
+
\t\t<%= stylesheet_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
|
63
|
+
RUBY
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
@import "~bootstrap/scss/bootstrap";
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Bullet
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
desc "Adds Bullet gem to the application"
|
7
|
+
source_root File.expand_path("templates", __dir__)
|
8
|
+
|
9
|
+
class_option :skip_configuration, type: :boolean, aliases: "-s",
|
10
|
+
desc: "Skips adding bullet development configuration"
|
11
|
+
|
12
|
+
def add_bullet_gem
|
13
|
+
say "Adding Bullet gem", :green
|
14
|
+
bullet_gem_content = <<~RUBY
|
15
|
+
\n
|
16
|
+
\t# reports N+1 queries
|
17
|
+
\tgem "bullet"
|
18
|
+
RUBY
|
19
|
+
insert_into_file "Gemfile", bullet_gem_content, after: /group :development do/
|
20
|
+
run "bundle install"
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_bullet_gem_configuration
|
24
|
+
return if options[:skip_configuration]
|
25
|
+
|
26
|
+
say "Copying bullet.rb configuration to the initializer", :green
|
27
|
+
template("bullet.rb", "config/initializers/bullet.rb")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Ci
|
5
|
+
module Circleci
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
desc "Adds Circle CI to the application"
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
9
|
+
|
10
|
+
DEFAULT_RUBY_VERSION = "2.7.1"
|
11
|
+
DEFAULT_REPOSITORY_NAME = "boring_generators"
|
12
|
+
|
13
|
+
class_option :ruby_version, type: :string, aliases: "-v",
|
14
|
+
desc: "Tell us the ruby version to which you use for the application. Default to Ruby #{DEFAULT_RUBY_VERSION}"
|
15
|
+
class_option :skip_node, type: :boolean, aliases: "-sn",
|
16
|
+
desc: "Skips the node configuration required for webpacker based Rails application."
|
17
|
+
class_option :repository_name, type: :string, aliases: "-rn",
|
18
|
+
desc: "Tell us the repository name to be used as database name on circleci. Defaults to #{DEFAULT_REPOSITORY_NAME}"
|
19
|
+
|
20
|
+
def add_circle_ci_configuration
|
21
|
+
@skip_node = options[:skip_node]
|
22
|
+
@ruby_version = options[:ruby_version] ? options[:ruby_version] : DEFAULT_RUBY_VERSION
|
23
|
+
@repository_name = options[:repository_name] ? options[:repository_name] : DEFAULT_REPOSITORY_NAME
|
24
|
+
|
25
|
+
template("config.psql.yml", ".circleci/config.yml")
|
26
|
+
template("database.yml.ci", "config/database.yml.ci")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
orbs:
|
4
|
+
ruby: circleci/ruby@1.1.1
|
5
|
+
<%- unless @skip_node -%>
|
6
|
+
node: circleci/node@2
|
7
|
+
<%- end -%>
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
parallelism: 1
|
12
|
+
docker:
|
13
|
+
- image: cimg/ruby:<%= @ruby_version %>-node
|
14
|
+
- image: circleci/postgres:11.2
|
15
|
+
environment:
|
16
|
+
POSTGRES_USER: postgres
|
17
|
+
POSTGRES_DB: <%= "#{@repository_name}_test" %>
|
18
|
+
environment:
|
19
|
+
BUNDLE_JOBS: "3"
|
20
|
+
BUNDLE_RETRY: "3"
|
21
|
+
PGHOST: 127.0.0.1
|
22
|
+
PGUSER: postgres
|
23
|
+
RAILS_ENV: test
|
24
|
+
steps:
|
25
|
+
- checkout
|
26
|
+
- ruby/install-deps
|
27
|
+
<%- unless @skip_node -%>
|
28
|
+
# Store bundle cache
|
29
|
+
- node/install-packages:
|
30
|
+
pkg-manager: yarn
|
31
|
+
cache-key: "yarn.lock"
|
32
|
+
<%- end -%>
|
33
|
+
- run: cp config/database.yml.ci config/database.yml
|
34
|
+
- run:
|
35
|
+
name: Wait for DB
|
36
|
+
command: dockerize -wait tcp://localhost:5432 -timeout 1m
|
37
|
+
- run:
|
38
|
+
name: Database setup
|
39
|
+
command: bundle exec rails db:schema:load --trace
|
40
|
+
- run:
|
41
|
+
name: Run test
|
42
|
+
command: bundle exec rails test
|
43
|
+
|
44
|
+
workflows:
|
45
|
+
version: 2
|
46
|
+
test:
|
47
|
+
jobs:
|
48
|
+
- test
|
@@ -0,0 +1,48 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
orbs:
|
4
|
+
ruby: circleci/ruby@1.1.1
|
5
|
+
node: circleci/node@2
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
test:
|
9
|
+
parallelism: 1
|
10
|
+
docker:
|
11
|
+
- image: cimg/ruby:<%= @ruby_version %>-node
|
12
|
+
environment:
|
13
|
+
MYSQL_DATABASE: <%= @test_database_name %>
|
14
|
+
environment:
|
15
|
+
BUNDLE_JOBS: "3"
|
16
|
+
BUNDLE_RETRY: "3"
|
17
|
+
RAILS_ENV: test
|
18
|
+
steps:
|
19
|
+
- checkout
|
20
|
+
- run:
|
21
|
+
name: Waiting for MySQL to be ready
|
22
|
+
command: |
|
23
|
+
for i in `seq 1 10`;
|
24
|
+
do
|
25
|
+
nc -z 127.0.0.1 3306 && echo Success && exit 0
|
26
|
+
echo -n .
|
27
|
+
sleep 1
|
28
|
+
done
|
29
|
+
echo Failed waiting for MySQL && exit 1
|
30
|
+
- ruby/install-deps
|
31
|
+
<%- unless @skip_node -%>
|
32
|
+
# Store bundle cache
|
33
|
+
- node/install-packages:
|
34
|
+
pkg-manager: yarn
|
35
|
+
cache-key: "yarn.lock"
|
36
|
+
<%- end -%>
|
37
|
+
- run:
|
38
|
+
name: Database setup
|
39
|
+
command: bundle exec rails db:schema:load --trace
|
40
|
+
- run:
|
41
|
+
name: Run test
|
42
|
+
command: bundle exec rails test
|
43
|
+
|
44
|
+
workflows:
|
45
|
+
version: 2
|
46
|
+
test:
|
47
|
+
jobs:
|
48
|
+
- test
|
@@ -0,0 +1,14 @@
|
|
1
|
+
default: &default
|
2
|
+
adapter: postgresql
|
3
|
+
host: 127.0.0.1
|
4
|
+
encoding: unicode
|
5
|
+
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 10 } %>
|
6
|
+
|
7
|
+
development:
|
8
|
+
<<: *default
|
9
|
+
database: <%= "#{@repository_name}_development" %>
|
10
|
+
|
11
|
+
test:
|
12
|
+
<<: *default
|
13
|
+
user: postgres
|
14
|
+
database: <%= "#{@repository_name}_test" %>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Boring
|
4
|
+
module Ci
|
5
|
+
module GithubAction
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
desc "Adds Github Action to the application"
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
9
|
+
|
10
|
+
RUBY_VERSION_FILE = ".ruby-version"
|
11
|
+
|
12
|
+
DEFAULT_RUBY_VERSION = ".ruby-version"
|
13
|
+
DEFAULT_NODE_VERSION = "10.13.0"
|
14
|
+
DEFAULT_REPOSITORY_NAME = "boring_generators"
|
15
|
+
|
16
|
+
class_option :ruby_version, type: :string, aliases: "-v",
|
17
|
+
desc: "Tell us the ruby version which you use for the application. Default to Ruby #{DEFAULT_RUBY_VERSION}, which will cause the action to use the version specified in the #{RUBY_VERSION_FILE} file."
|
18
|
+
class_option :node_version, type: :string, aliases: "-v",
|
19
|
+
desc: "Tell us the node version which you use for the application. Default to Node #{DEFAULT_NODE_VERSION}"
|
20
|
+
class_option :repository_name, type: :string, aliases: "-rn",
|
21
|
+
desc: "Tell us the repository name to be used as database name on GitHub Actions. Defaults to #{DEFAULT_REPOSITORY_NAME}"
|
22
|
+
|
23
|
+
def add_github_actions_configuration
|
24
|
+
@ruby_version = options[:ruby_version] ? options[:ruby_version] : DEFAULT_RUBY_VERSION
|
25
|
+
@node_version = options[:node_version] ? options[:node_version] : DEFAULT_NODE_VERSION
|
26
|
+
@repository_name = options[:repository_name] ? options[:repository_name] : DEFAULT_REPOSITORY_NAME
|
27
|
+
|
28
|
+
template("ci.yml", ".github/workflows/ci.yml")
|
29
|
+
|
30
|
+
if @ruby_version == DEFAULT_RUBY_VERSION && !ruby_version_file_exists?
|
31
|
+
say <<~WARNING, :red
|
32
|
+
WARNING: The action was configured to use the ruby version specified in the .ruby-version
|
33
|
+
file, but no such file was present. Either create an appropriate .ruby-version file, or
|
34
|
+
update .github/workflows/ci.yml to use an explicit ruby version.
|
35
|
+
WARNING
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def ruby_version_file_exists?
|
40
|
+
Pathname.new(destination_root).join(RUBY_VERSION_FILE).exist?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
name: CI
|
2
|
+
on: [push]
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
name: Tests
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
services:
|
8
|
+
postgres:
|
9
|
+
image: postgres:11
|
10
|
+
env:
|
11
|
+
POSTGRES_USER: <%= @repository_name %>
|
12
|
+
POSTGRES_DB: <%= "#{@repository_name}_test" %>
|
13
|
+
POSTGRES_PASSWORD: ""
|
14
|
+
ports: ["5432:5432"]
|
15
|
+
|
16
|
+
steps:
|
17
|
+
- name: Checkout code
|
18
|
+
uses: actions/checkout@v2
|
19
|
+
- name: <%= "Set up Ruby #{@ruby_version}" %>
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: <%= @ruby_version %>
|
23
|
+
bundler-cache: true
|
24
|
+
- name: Setup Node
|
25
|
+
uses: actions/setup-node@v1
|
26
|
+
with:
|
27
|
+
node-version: <%= @node_version %>
|
28
|
+
- name: Find yarn cache location
|
29
|
+
id: yarn-cache
|
30
|
+
run: echo "::set-output name=dir::$(yarn cache dir)"
|
31
|
+
- name: JS package cache
|
32
|
+
uses: actions/cache@v1
|
33
|
+
with:
|
34
|
+
path: ${{ steps.yarn-cache.outputs.dir }}
|
35
|
+
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
36
|
+
restore-keys: |
|
37
|
+
${{ runner.os }}-yarn-
|
38
|
+
- name: Install packages
|
39
|
+
run: |
|
40
|
+
yarn install --pure-lockfile
|
41
|
+
- name: Setup test database
|
42
|
+
env:
|
43
|
+
RAILS_ENV: test
|
44
|
+
PGHOST: localhost
|
45
|
+
PGUSER: <%= @repository_name %>
|
46
|
+
run: |
|
47
|
+
bin/rails db:setup
|
48
|
+
- name: Run tests
|
49
|
+
run: bundle exec rails test # TODO: Update the test runner command as per your requirement.
|