⭐️中間テスト アウトプット

git clone

git clone クローンしたいurlでclone。
cloneしたらcdコマンドでclone先のディレクトリに移動して作業開始。

bundle exec rspec specでバグの内容を1つずつ確認しながらバグを修正していく。

ちなみに今回のバグ内容は下記。

rspec ./spec/system/blogs_spec.rb:18 # Blogs blog一覧から詳細ページにアクセスした場合 blogの詳細ページが表示されること  
rspec ./spec/system/blogs_spec.rb:29 # Blogs blog詳細ページでコメントした場合 blogの詳細ページにコメントが表示されること  
rspec ./spec/system/blogs_spec.rb:44 # Blogs blog詳細ページでコメントを削除した場合 blogの詳細ページからコメントが削除されること  
rspec ./spec/system/blogs_spec.rb:62 # Blogs blog詳細ページで編集画面へのリンクをクリックした場合 blogの編集ページが表示されること  
rspec ./spec/system/blogs_spec.rb:72 # Blogs blog編集ページにアクセスした場合 blogの編集用フォームが表示されること  
rspec ./spec/system/blogs_spec.rb:80 # Blogs blog編集ページにアクセスした場合 blogの編集用フォームに編集前のblog情報が表示されること  
rspec ./spec/system/blogs_spec.rb:96 # Blogs blog新規作成ページにアクセスした場合 blogの新規作成ページが正しく表示されていること  
rspec ./spec/system/blogs_spec.rb:103 # Blogs blog新規作成ページにアクセスした場合 blogの新規作成ができること  
rspec ./spec/system/blogs_spec.rb:112 # Blogs blog新規作成ページにアクセスした場合 blogの新規作成でcontentも正しく作成できること  
rspec ./spec/system/blogs_spec.rb:124 # Blogs blog一覧ページでblogを削除しようとした場合 blogが一覧ページから削除されること

今回はサクサク進められたので、自分の手が止まってしまったバグだけ復習していきます。

rspec ./spec/system/blogs_spec.rb:112 # Blogs blog新規作成ページにアクセスした場合 blogの新規作成でcontentも正しく作成できること

上記エラーでは、まず
1 . blogを作成した時にサーバーのログでparameterにどこまで送った情報が入っているかを確認しました。
結果、
titleはparameterに入っていて、
contentだけ入っていない状態だったので、
blogを作成して保存する動作である
BlogsControllercreateアクションを確認。

Image from Gyazo

2 . 上記で@blogがどこまで持ってこられているかをbinding.pryを使って検証。
すると、contentの値がnilだったので、

3 . @blog = Blog.new(blog_params)(blog_params)の内容を確認。
permitの引数に:contentがなかったので追加。

def blog_params
    params.require(:blog).permit(:title, :content)
end

ただ、contentにどんな文字を入力しても0になって出力されるので、この0はどこから来てるんだ??と疑問🤔
もしかしたらデータベースが怪しい?と感じたので、db/schema.rbを確認。
Image from Gyazo

すると、blogsテーブルのcontentのデータ型が、integerになっている!
なので、マイグレーションファイルを新規作成してcontentのデータ型を変えることに。
$ rails g migration ChangeDatatypeカラム名Ofテーブル名

$ rails g migration ChangeDatatypeContentOfBlogs
カラム名、テーブル名の頭文字は大文字

・生成されたファイルを編集

change_column :テーブル名, :カラム名, :データ型
Image from Gyazo

最後に、rails db:migrateした後しっかりrails db:migrate:statusしてマイグレーションファイルがしっかりupされているか確認して、contentが文字列を表示してくれたことで解決!✨

🟢中間テスト総括
解説動画なしでほぼほぼ進められたので今後もこの調子で頑張る!
エラーログと
binding.pryを使って、
どこまで変数を持ってこられているかを調査することで
問題の切り分けをし、 バグを1つずつ解決していけるんだな、
と今回の課題で再認識出来ました。
Railsチュートリアルの時は、エラーが起きた時にあれこれコードを書いて自分が書いたコードがどれか分からなくなり、沼にハマってしまっていたので、今後はそうならないように問題の切り分けをしっかりと行いながら開発を進めていきたいです!💪