質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

Q&A

1回答

1703閲覧

circleCIの自動テスト時にtableが存在しないというエラーが出力された

oeiqgfodgfhps

総合スコア35

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

0グッド

0クリップ

投稿2021/08/25 08:08

お世話になっております。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が出てきたのかもわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

db/schema.rb をgit commit していますか?

投稿2021/08/25 12:27

winterboum

総合スコア23549

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oeiqgfodgfhps

2021/08/26 03:17

db/schema.rbが原因っぽいですか??
winterboum

2021/08/26 06:22

追記・修正依頼に書くつもりでうっかり回答に書いてしまったのですが(アホ) DBにtableがない、ということは DBの作り直しというか、作成というかそれに失敗しているのではないか、と思われます。 circleciのどのステップで起きてますか? rspec とか minitest とかのステップですか?
oeiqgfodgfhps

2021/08/26 07:13

bundle exec rails testの実行時に落ちています
oeiqgfodgfhps

2021/08/26 07:17 編集

その前のDatabase Setupのタスクには成功していますので、作成に失敗していると言うことは考えにくいのでは無いかなと思います、、(自分の無知だけかもしれませんが、、)
winterboum

2021/08/26 11:51

とすると、db/schema.rb 一度舐めてみて
oeiqgfodgfhps

2021/08/26 12:10

すみません、舐めてみると言うのはどう言うことでしょうか??
winterboum

2021/08/26 13:30

じっくり眺めて、patienecs があることを確認してください
oeiqgfodgfhps

2021/08/26 14:11

patiencesがあることを確認できました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問