Ruby on Rails チュートリアル やってみてる ~10章~
どうもです。
近頃すっかり暖かくなってきてしまい、クマムシの需要もなくなってしまいましたね。
今回は10章です。マイクロポストの実装。ツイッター的なやつですね。
この10章は今までもっともボリュームがあった気がしました。余裕を持って4,5日くらいかけて終わらせるつもりでもいいかもしれません。
で、この章でももちろんタイポとか抜けとかでテストでエラーが出まくったわけですが、進めていくうちにテストを実行する箇所が数箇所あります。
テストが全て通ったらその時点で一度pushしておいた方が良いでしょう。コードのボリュームも扱うファイルの量も多いので後半に来てからどこがおかしいのかわからなくなるととても辛いです。こまめにgithubにpushしておいてくださいね。
それでは10章のまとめいってみます。
10章の概要
いわゆるTwitter的なマイクロソフトの実装です。
投稿にはユーザーのIDが紐付いていて、ユーザーを削除するとポストも削除されるという設計にちゃんとなってます。
昔の掲示板とか名前のところが空で投稿自体は残ってるってのがよくあったなぁ。。。オレンジのSNSで母校の同好会に書き込んだ僕の投稿誰か消してくれないかなぁ。。。
マイクロポスト機能ができるということでモデルも作っていきます。
一人の人が多くの投稿と紐付いているという複雑な構造になっているので、それをRailsではどう作っていくのかをテストを書きまくりながら実装していきます。
新しく投稿されたものが上から表示されていることもテストを書いて実装。
最大140文字までしか投稿できないというバリデーションなんかも実装。
homeやユーザー画面に投稿を表示させていったりします。
で、またRailsの超便利機能が登場。rakeでサンプル投稿を量産させていってしまいます。すげええ。
10章ではCSSやhtml.erbもめちゃくちゃ書きまくります。CSSとHTMLは学習済みなのでそこだけはコピペして内容はちゃんと理解するという自分ルールにしています。
サインインしていないと投稿できないようなアクセス制御を入れたりしてから、いよいよマイクロポストの投稿を実装していきます。
そして最後に投稿の削除機能を実装してこの章は終わりです。
この後に演習がありますが、はっきり言って僕だけの力ではどうしようもなかったので先人の知恵(githubで公開されている他の人のコード)を写経させていただきました。
といった感じでした。いやーすごいボリュームでした。
ハマったところ
今回も例外なくタイポしまくりました。diffを使ってどこが違うのか確認しましょう。自分がよく間違う単語や記号の傾向がわかってきます。まじで。
今回は前回までのようにどこが間違ってるんだかわかんないから章の始めの状態まで戻すということを恐れ、テストを回してオールグリーンになる度にpushしておりました。
が、その甲斐なく「あ、なんだよ、、ここタイポしてんじゃん。。」って程度のミスだけで済んだため、git cloneする機会はありませんでした。とほほ。
herokuで謎のエラー
この学習でのあるあるは、ちょっと間が空いてしまうとherokuに何かしらの問題が起こるというもの(笑)
今回もドキドキしながら git push heroku したんですがやっぱりいろいろエラーが起きまして、このシリーズでもいろいろ対処してきましたが、それでもどうにもならなくなったので、heroku createしちゃいました。つまり新しい環境をherokuに作っちゃいました。
それでpushするとすんなり通って何の問題もなくなったと。い、一応解決したとさせてください。
参考にしたのは以下の記事。以下の記事ではoriginの方を変更してるけど、僕らが変えるべきはherokuなのでご注意を。githubにpushされなくなっちゃいますので。
Gitで fatal: remote origin already exists. というメッセージが出る場合 - ponkiti's blog
演習
はっきり言って全然わからなかったので、カンニングしました。
写経しながらなるほどなぁ~と唸っていた感じです。よくわかりますね皆さん。。。
感想など
いやー、とにかく書いたコード量は過去最高じゃないでしょうか。
そのわりにどうにもならないようなエラーは出なかったですね。よかった。
次回の第11章でこのシリーズは終わってしまいますが、早くも次にやりたいことが決まりました。
Railsチュートリアルのどこかでも書いてあったと思ったのですが、rubyについては別途ちゃんと勉強しなくてはならないとのことでしたので、以下の本を進めて行こうと思っています。
クローラーが使えたら生活の中でもいろいろと便利になると思うんですよね。
というわけで次回は最終回。
また時間が空いてしまうかもしれませんが、ついに完走することができそうです。
第11章は「ユーザーをフォローする」です。またモデルの構築がありそうな感じですね。
ではまた。
Ruby on Rails チュートリアル やってみてるシリーズ: