今回の概要
前回書いた、フロントサイドのバックエンドバージョンです。
前回の記事はこちら
使用技術
- Ruby on Rails
- MySQL
- Docker
jobsの設定
今回の記事は、name
とon
の説明は省略させていただきます。前回の記事を御覧ください。
今回のつまづきポイント
何故かconfig/database.yml
で指定できない…
今回は、Dockerを使っていることもあり、Dockerと紐付けられるように下記のように書いてあります。
databese.yml
test: <<: *default database: myapp_test host: db_test
こちらをしてすれば良いと思い、ci.ymlに同じhostとdatabaseを指定して書いたものの、エラーが発生し、解決できませんでした。
そのため、test用のymlファイルconfig/database.yml.ci
を新たに作成して、こちらをDBとして見るようにして、migrationを実施しました…
全体的な流れは、
- DBを指定。今回は、MySQL
- アクセスできるように
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
を追加。普通にパスワード書いても良い(config/database.yml
に書くように)
- アクセスできるように
- Rubyのセットアップ
- ruby-versionを指定
- migrationの実施
- こちらが
config/database.yml
にconfig/database.yml.ci
をコピーするという1行を追加した。 - 他は、ローカルと同様に
create
とmigrate
を実施
- こちらが
- 実行する中身
- RspecとRubocopを実行する
完成形
ci.yml
name: Rails-ci on: push: branches: - "**" jobs: Rspec_Rubocop: runs-on: ubuntu-latest timeout-minutes: 10 env: RAILS_ENV: test services: db: image: mysql ports: - 3306:3306 env: LANG: "ja_JP.UTF-8" MYSQL_ALLOW_EMPTY_PASSWORD: "yes" options: >- --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 10 steps: # 該当ブランチをcheckout - name: Checkout code uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.2.0 bundler-cache: true # migrationの実施 - name: DB migration run: | cp config/database.yml.ci config/database.yml bundle exec rails db:create bundle exec rails db:migrate # RSpec - name: Run Rspec run: bundle exec rspec # Rubocop - name: Run Rubocop run: bundle exec rubocop
config/database.yml.ci
test: adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: host: 127.0.0.1 database: myapp_test
未だに、なぜdatabase.yml
を直接見てくれないのかわからないので、原因調査しています!
注意点
駆け出しエンジニアです。日々の業務や学習から、気になったことをアウトプットしています。
まだ、理解できていない点も多く、間違えている点が多々あるかと思います。
その時は、ご指摘いただけると助かります。よろしくお願いします。