[Day2 Rails Tutorial]第二章はサクサク?でも最後に自滅[1.4.4〜2.4]

Rails Tutorial day2 感想 まとめ 振り返り エラー解決 演習問題 回答

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に実際にデプロイ。

できたと思ったのに、エラー。

Rails Tutorial Heroku apprication error

指示通りに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 アプリ名で削除。

参考:Herokuのアプリをターミナルで削除する

 

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コマンドは下のサイトに詳しく乗っていた。

参考: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で生成されたコードの中でデータベースからユーザー情報を取得しているコードを探してみてください。

  1. URL
  2. ルーティング
  3. コントローラー
  4. set_userでModelからユーザー情報所得
  5. editアクション
  6. viewからHTML情報を所得
  7. ページ表示

ユーザーの情報を編集するページのファイル名は何でしょうか?

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ページを編集し、ユーザーの最初のマイクロポストを表示してみましょう。

users_controller.rb改変
def show
    @current_user_microposts = Micropost.where(user_id: params[:id])
  end
show.html.erbに追加
<p>
  <strong>First post:</strong>
  <%= @current_user_microposts.first.content %>
</p>

できちんと表示されることが確認できた。

 

[Day2]まとめ

  • 学習範囲:1.4.4〜2.4
  • 学習時間:5時間
  • 総学習時間:11時間50分
  • 反省点:エラーがでても焦らない。落ち着いて、自滅しないこと。

読んでいただいている方、いつもありがとうございます!

初心者なもので、たまに間違った内容もあるかと思います。

その際にはコメントやTwitterでご指摘いただけると幸いです!

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です