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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Q&A

解決済

1回答

2694閲覧

bundle exec rspecが起動しない

denisov

総合スコア6

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

0グッド

0クリップ

投稿2021/05/09 09:34

編集2021/05/09 23:03

□解決したいこと

bundle exec rpsec~ 実行すると、pspecの処理が止まってしまいます。

bundle exec rspec spec/models/tip_spec.rb #ここで処理が止まる

テストを実行させたいのですが、原因等お分かりの方いらっしゃいましたらご教示いただきたくお願い申し上げます。

□仮説及び調べたこと

上記、止まってしまったところでctl+Cで処理を止めました。

ここまで表示されたターミナル

taniguroarata@tanikuroshintanoMacBook-Pro archtips % bundle exec rspec spec/models/tip_spec.rb ^C RSpec is shutting down and will print the summary report... Interrupt again to force quit. rails aborted! Interrupt: /Users/taniguroarata/originalapp/archtips/bin/rails:9:in `<top (required)>' /Users/taniguroarata/originalapp/archtips/bin/spring:15:in `require' /Users/taniguroarata/originalapp/archtips/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:test:load => db:test:purge (See full trace by running task with --trace) Migrations are pending. To resolve this issue, run: rails db:migrate RAILS_ENV=test No examples found.

その際に

Migrations are pending. To resolve this issue, run: rails db:migrate RAILS_ENV=test No examples found.

とありましたので、

rails db:migrate RAILS_ENV=test

を実行しました。

== 20210509012613 AddImageToTip: migrating ==================================== -- add_column(:tips, :image, :string) #ここで処理が止まる

こちらも、途中で処理が止まってしまいました。

ID 20210509012613 がupの状態になっていないためと想定し、rails db:migrate:statusで確認しました。

database: archtips_development Status Migration ID Migration Name -------------------------------------------------- up 20210323145951 Devise create users up 20210331134218 Create tips up 20210403100758 Create active storage tablesactive storage up 20210417121435 Create comments up 20210429095154 Create tags up 20210429095830 Create tip tag relations up 20210509012613 Add image to tip

となり、ID 20210509012613はupの状態でした。

確認のため、rails db:rollbackでdownにしてから、再度rails db:migrate しましたが、結果は同じでした。

また、rails sは一度切った後、再起動しております。

解決方法がお分かりの方いらっしゃいましたらアドバイスいただきたくお願い申しあげます。

参考:エラーの原因となった
20210509012613_add_image_to_tip.rb

class AddImageToTip < ActiveRecord::Migration[6.0] def change add_column :tips, :image, :string end end

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーはがぞうでなくtextで貼ってほしい。潰れて読みにくいし、コピペもできない

rails db:migrate RAILS_ENV=test をやれ、というのは test 環境のDBについてやれ、ということです。
rails db:migrate:status はdevelo@pment環境のDBなので、その結果では判断できません。

RAILS_ENV=test rails db:migrate:status だとどうなります?

投稿2021/05/09 14:46

winterboum

総合スコア23329

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

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

denisov

2021/05/09 23:01 編集

エラーがぞうでなくtextで貼ってほしい。潰れて読みにくいし、コピペもできない →配慮が足りませんでした。申し訳ございません。  修正させていただきました。 rails db:migrate RAILS_ENV=test をやれ、というのは test 環境のDBについてやれ、ということです。 →ありがとうございます。テスト環境でrails db:migrateを行えという指示だったのですね。勉強になりました。 RAILS_ENV=test rails db:migrate:status だとどうなります? → ご回答ありがとうございます。RAILS_ENV=test rails db:migrate:statusをかけた結果、 ``` RAILS_ENV=test rails db:migrate:status database: archtips_test Status Migration ID Migration Name -------------------------------------------------- up 20210323145951 Devise create users up 20210331134218 Create tips up 20210403100758 Create active storage tablesactive storage up 20210417121435 Create comments up 20210429095154 Create tags up 20210429095830 Create tip tag relations down 20210509012613 Add image to tip ``` となりました。 つまり、テスト環境内の ID 20210509012613 をupにすれば良いということだと思われますが、 再度、rails db:migrate RAILS_ENV=test を実行したところ ``` == 20210509012613 AddImageToTip: migrating ==================================== -- add_column(:tips, :image, :string) #ここで処理が止まる ``` -- add_column(:tips, :image, :string) の部分で処理が止まってしまいます。 (上記質問覧に当該内容を記述しておりませんでした。申し訳ございません。質問覧にもその旨、追記させていただきます) 以下は、-- add_column(:tips, :image, :string)で止まったあと、ctl+cで処理を止めた後のターミナルの内容です。 ``` RAILS_ENV=test rails db:migrate == 20210509012613 AddImageToTip: migrating ==================================== -- add_column(:tips, :image, :string) ^Crails aborted! Interrupt: /Users/taniguroarata/originalapp/archtips/db/migrate/20210509012613_add_image_to_tip.rb:3:in `change' /Users/taniguroarata/originalapp/archtips/bin/rails:9:in `<top (required)>' /Users/taniguroarata/originalapp/archtips/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace) ```
winterboum

2021/05/10 05:22

確認のため、rails db:rollbackでdownにしてから、再度rails db:migrate しましたが、結果は同じでした。 これはどちらの環境? test環境で試してください
denisov

2021/05/10 12:54 編集

お手数をおかけして申し訳ございません。 RAILS_ENV=test rails db:rollback  を行った後、 RAILS_ENV=test rails db:migrate を実行するという認識でよろしいでしょうか。 間違っていたら、申し訳ございません。 RAILS_ENV=test rails db:rollback を実行した後、 drop_table(:tip_tag_relations) で処理が止まってしまいます。 ``` % RAILS_ENV=test rails db:rollback == 20210429095830 CreateTipTagRelations: reverting ============================ -- drop_table(:tip_tag_relations) #ここで処理が止まる ^Crails aborted! Interrupt: /Users/taniguroarata/originalapp/archtips/bin/rails:9:in `<top (required)>' /Users/taniguroarata/originalapp/archtips/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:rollback (See full trace by running task with --trace) ``` RAILS_ENV=test rails db:migrate に関しても、同様の場所で処理が止まります。 ``` % RAILS_ENV=test rails db:migrate == 20210509012613 AddImageToTip: migrating ==================================== -- add_column(:tips, :image, :string) ^Crails aborted! Interrupt: /Users/taniguroarata/originalapp/archtips/db/migrate/20210509012613_add_image_to_tip.rb:3:in `change' /Users/taniguroarata/originalapp/archtips/bin/rails:9:in `<top (required)>' /Users/taniguroarata/originalapp/archtips/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace) ``` 私の認識違い等、間違いがございましたら、ご指摘ください。 お手数おかけいたします。
winterboum

2021/05/10 13:47

rollbak ではなく、 drop して create して migrate が確実です
denisov

2021/05/10 14:16

早速のご回答ありがとうございます。 RAILS_ENV=test rails db:drop の後 RAILS_ENV=test rails db:create 最後にRAILS_ENV=test rails db:migrate という順序で試そうと思いました。しかしRAILS_ENV=test rails db:dropを実行後、そのまま処理が止まってしまいました。 ``` % RAILS_ENV=test rails db:drop #ここで処理が止まる ^C Couldn't drop database 'archtips_test' rails aborted! Interrupt: /Users/taniguroarata/originalapp/archtips/bin/rails:9:in `<top (required)>' /Users/taniguroarata/originalapp/archtips/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:drop:_unsafe (See full trace by running task with --trace) ```
winterboum

2021/05/10 20:51

なんかおかしいね。 database.yml触って test環境のdatabase名を変更し、新しいdatabaseでやって見るのが手っ取り早いかな
denisov

2021/05/10 22:41 編集

ありがとうございます。テストの実行できました。 親切に御対応頂き、心から感謝いたします。 1点、課題としてはテストの実行速度がとても遅いことです。 しかし、表題の問題に関しては解決できました。 テスト速度の問題については検討したいと思います。 以下、実行したこと database.ymlを変更 ``` test: <<: *default database: testarchtips_test ``` データベースを作成 ``` % RAILS_ENV=test rails db:create ``` ``` % RAILS_ENV=test rails db:migrate ``` この環境でbundleexec rspec を実行したところ、 テストが実行できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問