denisov_2023
@denisov_2023 (デニソフ)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

bundle exec rspecが起動しない。

□解決したいこと

bundle exec rpsec~ 実行すると、以下のURLのようにpspecが止まってしまいます。

https://gyazo.com/ce33aebf5ea769bd842df25d43cfdfb1

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

□仮説及び調べたこと

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

その際に

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)

と表示されました。

ここまでのターミナルのスクショ https://gyazo.com/aa34df14dcf5d506fb80fcd9d1cd4806

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
0

2Answer

Comments

  1. @denisov_2023

    Questioner

    ご回答ありがとうございます。
    勉強不足のため、テスト環境の問題ということがわかりませんでした。

    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)
    ```

    最後に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
    ```

    初心者のため知識不足で申し訳ないのですが、ご意見いただけると大変ありがたいです。
  2. @denisov_2023

    Questioner

    テスト用のデータベース名を変更して、実装を行いました。
    ご回答いただきありがとうございます。

    database.ymlを変更

    ```
    test:
    <<: *default
    database: testarchtips_test
    ```
    データベースを作成

    ```
    % RAILS_ENV=test rails db:create
    ```

    ```
    % RAILS_ENV=test rails db:migrate
    ```
    この環境でbundleexec rspec を実行したところ、
    テストが実行できました。
  3. developmentで同じエラーが起きていないなら、migrationファイルが前後で変更されていて、シンタックスエラー等があるとか?

    最初のエラー内容もそうですけど、記号ばっかりと思わずによく読んでみるとヒントはあります。

    今回の場合は`--trace`付けたらもっと分かるかもしれません。


    ```
    RAILS_ENV=test rails db:rollback --trace
    ```


    https://www.deepl.com/ja/translator#en/ja/%25%20RAILS_ENV%3Dtest%20rails%20db%3Arollback%0A%3D%3D%2020210429095830%20CreateTipTagRelations%3A%20reverting%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A--%20drop_table(%3Atip_tag_relations)%20%E3%80%80%23%E3%81%93%E3%81%93%E3%81%A7%E5%87%A6%E7%90%86%E3%81%8C%E6%AD%A2%E3%81%BE%E3%82%8B%0A%5ECrails%20aborted!%0AInterrupt%3A%0A%5C%2FUsers%5C%2Ftaniguroarata%5C%2Foriginalapp%5C%2Farchtips%5C%2Fbin%5C%2Frails%3A9%3Ain%20%60%3Ctop%20(required)%3E'%0A%5C%2FUsers%5C%2Ftaniguroarata%5C%2Foriginalapp%5C%2Farchtips%5C%2Fbin%5C%2Fspring%3A15%3Ain%20%60%3Ctop%20(required)%3E'%0Abin%5C%2Frails%3A3%3Ain%20%60load'%0Abin%5C%2Frails%3A3%3Ain%20%60%3Cmain%3E'%0ATasks%3A%20TOP%20%3D%3E%20db%3Arollback%0A(See%20full%20trace%20by%20running%20task%20with%20--trace)


    あとデータベースは何を使っているのかわかりませんが、
    https://tableplus.com/
    とかで実際のtest環境データベースの中身を見てみて一致している状態にあるのか見ると今時分が何をやっているのかより分かるかも。

    migrationでやってる事はデータベースのテーブルをステップ毎で同期させているだけです。

ありがとうございます。親切なご回答心より感謝いたします。
おっしゃる通り、エラーとしっかり向き合う意識が足りなかったようです。善処いたします。

今手元で実行することができませんが、アドバイスをもとに testarchtipsをarchtipsに戻し、今何をやっていたのか、しっかり把握したいと思います。

0Like

Your answer might help someone💌