From 5960c1af147cbbb2db8fc0dba986e865fe9dac05 Mon Sep 17 00:00:00 2001 From: Andre Gomes Date: Thu, 8 Feb 2024 14:11:21 -0300 Subject: [PATCH 1/3] lint: Gemfile autocorrect --- Gemfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index d4f5083..23dc72a 100644 --- a/Gemfile +++ b/Gemfile @@ -24,8 +24,8 @@ gem 'bootsnap', '>= 1.4.4', require: false group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: %i[mri mingw x64_mingw] - gem 'rspec-rails', '~> 6.0.0', groups: %i[development test] - gem 'factory_bot_rails', '~> 6.0.0', + gem 'factory_bot_rails', '~> 6.0.0', require: false + gem 'rspec-rails', '~> 6.0.0' gem 'rubocop', '~> 1.48', require: false gem 'rubocop-performance', '~> 1.16', require: false gem 'rubocop-rails', '~> 2.18', require: false From 92edebf7a27fa1a5f399c43b0807bc87e70dd980 Mon Sep 17 00:00:00 2001 From: Andre Gomes Date: Thu, 8 Feb 2024 14:11:36 -0300 Subject: [PATCH 2/3] feat: add RSpec and Rubocop workflows --- .github/workflows/rails.yml | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/rails.yml diff --git a/.github/workflows/rails.yml b/.github/workflows/rails.yml new file mode 100644 index 0000000..939902c --- /dev/null +++ b/.github/workflows/rails.yml @@ -0,0 +1,48 @@ +name: "Ruby on Rails CI" +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] +jobs: + test: + runs-on: ubuntu-latest + services: + postgres: + image: mysql:8.0 + ports: + - "3306:3306" + env: + POSTGRES_DB: rails_test + POSTGRES_USER: rails + POSTGRES_PASSWORD: password + env: + RAILS_ENV: test + DATABASE_URL: "postgres://rails:password@localhost:3306/rails_test" + steps: + - name: Checkout code + uses: actions/checkout@v3 + # Add or replace dependency steps here + - name: Install Ruby and gems + uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 + with: + bundler-cache: true + # Add or replace database setup steps here + - name: Set up database schema + run: rails db:schema:load + # Add or replace test runners here + - name: Run rspec + run: bundle exec rspec + + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Install Ruby and gems + uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 + with: + bundler-cache: true + # Add or replace any other lints here + - name: Run rubocop + run: bundle exec rubocop From 83ccffd6894320a3bf6454f601315d885b57f0a4 Mon Sep 17 00:00:00 2001 From: Andre Gomes Date: Thu, 8 Feb 2024 14:19:18 -0300 Subject: [PATCH 3/3] fix: test workflow --- .github/workflows/rails.yml | 32 ++++++++++++++++++++++---------- db/schema.rb | 15 +++++++++++++++ 2 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 db/schema.rb diff --git a/.github/workflows/rails.yml b/.github/workflows/rails.yml index 939902c..6cb0618 100644 --- a/.github/workflows/rails.yml +++ b/.github/workflows/rails.yml @@ -8,29 +8,41 @@ jobs: test: runs-on: ubuntu-latest services: - postgres: - image: mysql:8.0 + mysql2: + image: mysql:5.7 ports: - "3306:3306" env: - POSTGRES_DB: rails_test - POSTGRES_USER: rails - POSTGRES_PASSWORD: password + MYSQL_DATABASE: rails_test + MYSQL_USER: rails + MYSQL_PASSWORD: password + MYSQL_TCP_PORT: 3306 + MYSQL_RANDOM_ROOT_PASSWORD: true + MYSQL_ONETIME_PASSWORD: true + # Before continuing, verify the mysql container is reachable from the ubuntu host + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + env: RAILS_ENV: test - DATABASE_URL: "postgres://rails:password@localhost:3306/rails_test" + NODE_ENV: test + DATABASE_URL: "mysql2://rails:password@127.0.0.1:3306/rails_test" # localhost doesn't work because the application can't connect to the linux host socket steps: - name: Checkout code uses: actions/checkout@v3 - # Add or replace dependency steps here - name: Install Ruby and gems uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 with: bundler-cache: true - # Add or replace database setup steps here - name: Set up database schema - run: rails db:schema:load - # Add or replace test runners here + run: bundle exec rails db:create db:migrate + - name: Install Node.js and packages + uses: actions/setup-node@v2 + with: + node-version: '18' + - name: Install Yarn and packages + run: npm install -g yarn@1.22.19 && yarn install + - name: Run webpacker + run: NODE_OPTIONS="--openssl-legacy-provider" bundle exec rails webpacker:compile # NODE_OPTIONS needs to be set inline to avoid a webpacker error with node 18 - name: Run rspec run: bundle exec rspec diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000..77bcf0f --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,15 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# This file is the source Rails uses to define your schema when running `bin/rails +# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 0) do + +end