読者です 読者をやめる 読者になる 読者になる

Ruby on Rails チュートリアル をやってみた その2

Ruby Ruby on Rails チュートリアル

前回の「Ruby on Rails チュートリアル をやってみた その1 - IxD's blog」では第1章でしたが、今回は

railstutorial.jp

 

こちらのチュートリアルをやっていきます。

今回はその2ということで、「第2章 Toyアプリケーション」です。

 

2.1 アプリケーションの計画

記事にはバージョン指定して

$ cd ~/workspace
$ rails _4.2.2_ new toy_app
$ cd toy_app/

となっていますが、

$ cd ~/workspace
$ rails new toy_app
$ cd toy_app/

としています。

当方で作成した環境とチュートリアルで想定している環境が異なるため、Gemfileの編集は行ってません。
因みにGemfieで指定されているバージョンとnewで作成されたアプリケーションにおける細かいバージョンの違いは多少ありますが、大きな違いはない。x.y.zのzが違う程度です。
また、前回の記事でも書いたように、BitbucketやHerokuは使用していないため、当記事ではBitbucketやHerokuに関する箇所は無視します。ですので、
2.1の最後に出てくるコマンドは、

$ git commit -am "Add hello"
$ heroku create
$ git push heroku master

ではなく、

$ git commit -am "Add hello"

としました。

2.1.1 ユーザーのモデル設計
説明のみなので特にありません。

2.1.2 マイクロポストのモデル設計
説明のみなので特にありません。

2.2 Usersリソース

$ rails server -b $IP -p $PORT

こちら実行すると当方の環境では以下のようなエラーが出ました。

`getaddrinfo': getaddrinfo: Name or service not known (SocketError)

前回の記事で作成した環境はサーバマシンに作成しているので、他のマシンから見えないと困ってしまいます。
ですので前回の記事に記載した、以下のコマンドを実行します。

$ rails server -d -b 0.0.0.0

2.2.1 ユーザーページを探索する
冒頭に「/」で表示されるのはRailsのデフォルトページが表示され、という記述がありますが、2.1の最後にリスト1.8と1.9で推奨した「Hello, world!」での手順と同様の手順を〜という記述があります。
この作業を行っているとデフォルトページではなく、Hello, world!となっているはずです。
と思いましたがリスト1.10をやるとは書かれていませんでしたので、デフォルトページが表示される、が正解ですね。

2.2.2 MVCの挙動
説明のみなので特にありません。

2.2.3 自動生成したUsersリソースの欠点
説明のみなので特にありません。

2.3 Micropostsリソース
説明のみなので特にありません。

2.3.1 マイクロポストのページを探検する
躓くポイントは特にありませんでした。

2.3.2 マイクロポストをマイクロにする
躓くポイントは特にありませんでした。

2.3.3 ユーザーとマイクロポストをhas_manyで関連づける
リスト2.10 マイクロポストの最大文字数を140文字に制限する。

validates :content, length: { maximum: 140 }

validates:の場合はコロンの前にスペースがありますが、miximumの場合はコロンの後にスペースがあります。
この違いが一見してわかりませんでした。
命令に対してはコロンの前にスペース、パラメータ等はコロンの後にスペース、ということなんですかね?

ちなみに、rails consoleの箇所でコマンド実行順序を間違えてしまい、エラーが出ましたが、
toy_app以下のapp、db、config、testを削除してからgit checkout -fを実行し、2.1から再度やり直すことで元に戻せました。
が、後々考えてみると、こちらは確認するだけだったので特に必要なかったですね…

なんらか間違えてリカバーする方法が他にない場合はこのようにすると良いかもしれません。

2.3.4 継承の階層
説明のみなので特にありません。

2.3.5 アプリケーションをデプロイする

$ git status
$ git add -A
$ git commit -m "Finish toy app"
$ git push

とありますが、Bitbucketは使っていませんので、

$ git status
$ git add -A
$ git commit -m "Finish toy app"

と、しました。
同様に、Herokuも使用していないので、

$ git push heroku

$ heroku run rake db:migrate

は実行しません。

2.4 最後に
説明のみなので特にありません。
2.4.1 本章のまとめ
説明のみなので特にありません。

2.5 演習
解答はこちらで載せるのもどうかと思いますので、あえて掲載はしません。

 

次回、「Ruby on Rails チュートリアル をやってみた その3 - IxD's blog」は

railstutorial.jp

をやっていきます。