Rails TutorialのDay 2です。
今日もはりきっていきましょう!
読んでいただいている方、いつもありがとうございます!
初心者なもので、たまに間違った内容もあるかと思います。
その際にはコメントやTwitterでご指摘いただけると幸いです!
[Day2]第一章1.4.3〜第二章まで作業ログ
branchは親レポジトリのコピー
トピックブランチ(一時的に使用するもの)は基本的に親レポジトリのmasterブランチのコピー。
トピックブランチの変更はmasterブランチに反映されない。
トピックブランチで編集とか実験的なコードとかを書いていく。
万が一コードがぐちゃぐちゃになったり、消えても大丈夫。masterブランチからchekoutすればOK。
ブランチの一覧表示:git branch
ブランチ作成:git branch ブランチ名
ブランチ切り替え:git checkout ブランチ名
ブランチ作成&切り替え:git checkout -b ブランチ名
ブランチ削除:git branch -d ブランチ名
※-dフラグと異なり、-Dフラグは変更をマージしていなくてもブランチを削除してくれる
Herokuへのデプロイ(Web上に公開)に苦戦
Herokuの設定をして、git push heroku master
して、Herokuに実際にデプロイ。
できたと思ったのに、エラー。
指示通りにheroku logs --tail
を実行。
2018-09-02T01:51:45.955584+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=gentle-dawn-71193.herokuapp.com request_id=0f61cb08-dd1e-4f10-bb2b-acd16a1b5965 fwd="101.50.4.178" dyno= connect= service= status=503 bytes= protocol=https
というエラーメッセージを発見。
ネットを参考に、Gemfileの’pg’バージョン書き換えることで成功。
group :production do
gem 'pg', '< 1.0.0'
end
参考:herokuでApplication Error (Rails Tutorialをローカル環境で行っている時)
‘pg’バージョンを書き換えてからは、再度bundle install --without production
を実行。
git init
git add -A
git status
git commit -m "Commit Message"
git push -u origin master
でBitbucketにpush。
その後Herokuにもpushも忘れずに。
git push heroku master
時間かかったけど、なんとかクリアできた!先人たちに感謝。
途中heroku createをもう一回してしまった。残していても問題にはならないっぽいんだけど、スッキリしたいから、heroku apps:destroy --app アプリ名
で削除。
git init でフルパスが見れた
git init
●●●:~/environment/hello_app (master) $ git init
Reinitialized existing Git repository in /home/ec2-user/environment/hello_app/.git/
ーー第一章終了ーー
ーーここから第二章ーー
新しくtoy_appを作成
第一章のhello_appと同じようにtoy_appを作成。
BitbucketとHerokuにpush。
すんなりいけました。
最後のherokuにデプロイするときに勝手に迷走
第二章はさくさくいくなと思っていた矢先、toy_appを完成して、最後にherokuにアップするときに問題発生。
さっきまで、こんな画面だったのに、
herokuにアクセスすると、
しかない!
「え?なんでなんで?」と思って、heroku変更反映されないとかで調べまくり。
herokuアプリを作り直したり、無駄にcdして一度外にでてやり直してみたりしました。
が、もともとのhello,world!で合ってました。
ルーティングがhelloになってるから当たり前。
よくよく考えると、Micropostの方ももともと同じ作りで、URLに/micropostsなりを追加したら別ページにいけた。
herokuでもURLの最後に/micropostsを追加したら、きちんとできました。
勝手に迷走していただけでした。。
第二章まで終了おつかれさま!
メモ
MVCモデル
Model, View, Controllerに役割をわけてコーディングを行うモデル
- Model:システムのビジネスロジック
- View:表示や出力
- Controller:入力に基づいてModelとViewを制御
参考:MVCモデルについて
CRUD
ほとんどのソフトウェアが持つ永続性の4つの基本機能の頭文字
- Create
- Read
- Update
- Delete
UIが備えるべき機能(情報の参照/検索/更新)を指す用語としても使われるそう。
タケシなりの演習の回答
1.3.4.1と同じ変更を行い、本番アプリでも「hola, mundo!」を表示できるようにしてください。
ちょっとソースコードを変えて、pushしなおすだけ。
heroku helpコマンドを実行し、Herokuコマンドの一覧を表示してみてください。Herokuアプリのログを表示するコマンドはどれですか?
heroku logs
でログが表示できる。
これはHerokuで苦戦したときにすでに使ったね。
不具合を見つけるときに役に立つので、覚えておこう。
Herokuコマンドは下のサイトに詳しく乗っていた。
ーー第一章終了ーー
ーーここから第二章ーー
CSSを知っている読者へ: 新しいユーザーを作成し、ブラウザのHTMLインスペクター機能を使って「User was successfully created.」の箇所を調べてみてください。ブラウザをリロードすると、その箇所はどうなるでしょうか?
<p id=”notice”>User was successfully destroyed.</p>
てなったて。リロードすると消える。Progateでも勉強した。消える原理まではわからない。
emailを入力せず、名前だけを入力しようとした場合、どうなるでしょうか?
また「@example.com」のような間違ったメールアドレスを入力して更新しようとした場合、どうなるでしょうか?
どちらの場合も、登録されてしまう。
Progateで勉強したけど、バリデーションを設定していないから。
図 2.11を参考にしながら、/users/1/edit というURLにアクセスしたときの振る舞いについて図を書いてみてください。Scaffoldで生成されたコードの中でデータベースからユーザー情報を取得しているコードを探してみてください。
- URL
- ルーティング
- コントローラー
- set_userでModelからユーザー情報所得
- editアクション
- viewからHTML情報を所得
- ページ表示
ユーザーの情報を編集するページのファイル名は何でしょうか?
edit.html.erb
CSSを知っている読者へ: ブラウザのHTMLインスペクター機能を使って、表示されたエラーメッセージを調べてみてください。
<div id="error_explanation">
<h2>1 error prohibited this micropost from being saved:</h2>
<ul>
<li>Content is too long (maximum is 140 characters)</li>
</ul>
</div>
ユーザーのshowページを編集し、ユーザーの最初のマイクロポストを表示してみましょう。
def show
@current_user_microposts = Micropost.where(user_id: params[:id])
end
<p>
<strong>First post:</strong>
<%= @current_user_microposts.first.content %>
</p>
できちんと表示されることが確認できた。
[Day2]まとめ
- 学習範囲:1.4.4〜2.4
- 学習時間:5時間
- 総学習時間:11時間50分
- 反省点:エラーがでても焦らない。落ち着いて、自滅しないこと。
読んでいただいている方、いつもありがとうございます!
初心者なもので、たまに間違った内容もあるかと思います。
その際にはコメントやTwitterでご指摘いただけると幸いです!
コメントを残す