お世話になっております。circleCIで自動テストを行っているのですが、今まで実装していなかったテストコードを実装し、circleCIで走らせてみたところ下記のようなtableが存在しないというエラーが出ました。
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'saving_test-1.patienecs' doesn't exist
設定ファイルは下記のように設定しているのですが、どのように修正すれば自動テストに成功するでしょうか??
database.yml
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password host: 127.0.0.1 development: <<: *default database: saving_development test: database: saving_test adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root host: 127.0.0.1 production: <<: *default database: <%= ENV['DB_DATABASE'] %> adapter: mysql2 encoding: utf8mb4 charset: utf8mb4 collation: utf8mb4_general_ci host: <%= ENV['DB_HOST'] %> username: <%= ENV['DB_USERNAME'] %> password: <%= ENV['DB_PASSWORD'] %>
.circleci/config.yml
version: 2.1 orbs: ruby: circleci/ruby@0.1.2 jobs: build: docker: - image: circleci/ruby:3.0.0 environment: RAILS_ENV: test working_directory: ~/saving steps: - checkout - restore_cache: name: restore result bundle install keys: - v1-dependencies-{{ checksum "Gemfile.lock" }} - v1-dependencies- - run: name: bundle install command: bundle install --path=vendor/bundle --jobs 4 --retry 3 - run: name: rubocop command: bundle exec rubocop - save_cache: name: save cash result bundle install paths: - ./vendor/bundle key: v1-dependencies-{{ checksum "Gemfile.lock" }} test: docker: - image: circleci/ruby:3.0.0 environment: - BUNDLER_VERSION: 2.1.4 - RAILS_ENV: 'test' - DB_HOST: 127.0.0.1 - image: circleci/mysql:5.7 environment: - MYSQL_ALLOW_EMPTY_PASSWORD: 'true' - MYSQL_DB: saving_test working_directory: ~/saving steps: - checkout - run: name: wait for database command: dockerize -wait tcp://127.0.0.1:3306 -timeout 5m - restore_cache: name: restore cash result bundle install keys: - v1-dependencies-{{ checksum "Gemfile.lock" }} - v1-dependencies- - run: name: Install dependencies command: | gem install bundler -v 2.1.4 bundle install --path=vendor/bundle --jobs 4 --retry 3 - run: name: Database Setup command: | bundle exec rake db:create RAILS_ENV=test bundle exec rake db:schema:load RAILS_ENV=test bundle exec rake db:migrate RAILS_ENV=test - run: name: Run test command: bundle exec rails test deploy: machine: enabled: true steps: - checkout - add_ssh_keys: fingerprints: - 34:98:98:c5:83:2a:c0:b1:94:a0:c2:56:2d:4c:0d:11 - 08:a1:85:27:e7:83:c5:ae:68:8c:d2:3b:05:dc:82:70 - run: name: Reflect Code command: ssh ${USER_NAME}@${HOST_NAME} 'cd /saving && sudo git pull origin main' - run: name: Docker task command: ssh ${USER_NAME}@${HOST_NAME} 'cd /saving && docker-compose down && docker-compose build --no-cache && docker-compose up -d' - run: name: database setup command: ssh ${USER_NAME}@${HOST_NAME} 'cd /saving && docker-compose exec -T app rails db:migrate RAILS_ENV=production' workflows: version: 2 build_test_and_deploy: jobs: - build - test: requires: - build - deploy: requires: - test filters: branches: only: main
補足
database.ymlやcircleciのconfig.ymlでも、saving_test-1.patiencesのように-1が付いたようなテーブルは指定していないので、なぜこの1が出てきたのかもわかりません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/25 13:18
2021/08/26 03:17
2021/08/26 06:22
2021/08/26 07:13
2021/08/26 07:17 編集
2021/08/26 11:51
2021/08/26 12:10
2021/08/26 13:30
2021/08/26 14:11