Ruby on Rails チュートリアル をやってみた その8
前回「Ruby on Rails チュートリアル をやってみた その7 - IxD's blog」では第7章をやりましたが、今回は
から始めていきます。
今回も特に詰まった点はなかったのですが、演習とそれに関連する点ついて。
1について、チュートリアル中では明示的にクラス名をプレフィックスとして幾つかのクラスメソッドを定義していましたが、この演習で別のクラスメソッド定義方法が紹介されています。
リスト8.59: selfを使ってトークンやダイジェストの新しいメソッドを定義するでは一つ一つのクラスメソッドを定義する際にselfを記述しているのに対し、リスト8.60: class << selfを使ってトークンやダイジェストの新しいメソッドを定義するでは一度の記述でよく、纏まった一つのブロックとなるためコードの視認性が高いと言えます。
ちなみに、リスト8.32: rememberメソッドをUserモデルに追加するにある、self.remember_tokenのselfはクラスではなくモデル(ユーザーオブジェクトのインスタンス)を指している点に注意が必要です。
次回「Ruby on Rails チュートリアル をやってみた その9 - IxD's blog」は、
をやっていきます。
Ruby on Rails チュートリアル をやってみた その7
前回「Ruby on Rails チュートリアル をやってみた その6 - IxD's blog」で第6章をやりましたが、今回は
から始めていきます。
リスト7.6の通りにして、ブラウザで該当ページへアクセスすると、パーミッションエラーが発生しました。
ここでそもそもの勘違いがあったわけですが、ここでいう/users/1にアクセス、というのは何もブラウザでアクセスせよ、という話ではない点です。
ここでは、コンソールからのアクセスを想定していると考えられます。
従って、rails serverを起動した状態で、コンソールから、
といったようにするのですが、当方の環境では
と表示された以降、(byebug)プロンプトも出ずに終了しました。byebugについて色々とググってみたのですが、充分な結果を得られなかったことと、本チュートリアルを実行していく上で必ず必要な事項でもないため、ひとまずこの問題は棚上げします。勿論、当方の解釈が間違っている場合もあるので、その点は注意してください。
毎度の記述となりますが、当方のやってみたではBitbucketやHerokuは使用しませんので、
は未実行です。
次回「Ruby on Rails チュートリアル をやってみた その8 - IxD's blog」は、
をやっていきます。
Ruby on Rails チュートリアル をやってみた その6
前回「Ruby on Rails チュートリアル をやってみた その5 - IxD's blog」で第5章をやりましたが、今回は
から始めていきます。
本章については特に詰まる点はありませんでしたが、全体として難易度は上がっているように感じました。
これまでの章の内容をよく読み、進めていくことが求められると思います。
次回「Ruby on Rails チュートリアル をやってみた その7 - IxD's blog」は
をやっていきます。
Ruby on Rails チュートリアル をやってみた その5
前回「Ruby on Rails チュートリアル をやってみた その4 - IxD's blog」で第4章をやりましたが、今回は
から始めていきます。
これまでとは違い、今回からは詰まった場合や気になった項目のみを取り上げることとします。
リスト5.2: サインアップページへのリンクがあるHomeページ
の箇所で、リストの内容でソースを変更してブラウザで表示させたところ、
というエラーが表示されます。
そこで、
を参考に、config/environments/development.rbの
を
と書き換え、webサーバを再起動したところ、問題なく表示されました。
次回「Ruby on Rails チュートリアル をやってみた その6 - IxD's blog」は
をやっていきます。
Ruby on Rails チュートリアル をやってみた その4
前回は「Ruby on Rails チュートリアル をやってみた その3 - IxD's blog」で第3章をやりましたが、今回は
をやっていきます。
ここまでは特に詰まるポイントはないと思います。
上記コマンドについて、今回のやってみたではBitbucketやHerokuは使用しませんので、
としてあります。
「“deified”」という単語は回文である
とまとめに入ってるのはクールですね。
1.について、
リスト4.14のコードにある2つの疑問符を、それぞれ適切なメソッドに置き換えて、与えられた文字列の文字をシャッフルする関数を作成してください。ヒント: splitメソッド、shuffleメソッド、joinメソッドを組み合わせてみましょう。
とありますが、疑問符は3つありますので、それぞれにplitメソッド、shuffleメソッド、joinメソッドのいずれかを使用します。
次回「Ruby on Rails チュートリアル をやってみた その5 - IxD's blog」は、
をやっていきます。
Ruby on Rails チュートリアル をやってみた その3
前回、「Ruby on Rails チュートリアル をやってみた その2 - IxD's blog」で第2章をやりましたが、今回は
こちらのチュートリアルをやっていきます。
今回は第3章 ほぼ静的なページの作成です。
第3章 ほぼ静的なページの作成
説明のみなので特にありません。
リスト3.1
↓
実行したコマンド
リスト3.2
↓
実際に使用したGemfile
完全に環境を一緒にすることも考えましたが、バージョンがほぼ変わらないのでそのまま進めることにしました。
第1章や第2章と同様に、リスト1.8や1.9の「Hello, world」の手順に従うことをお勧めします。
とありますが、リスト1.9はroutes.rbのデフォルト状態が掲載されているのみですので、リスト1.10を実行してほしいのだろうと解釈し、実行しています。
また、今回のやってみたではBitbucketやHerokuは使用しませんので、
上記コマンドは実行しません。そして、
はコミットのみ実行としました。ですので、
のみとなります。これらのことからも分かる通り、
についても必要ありませんので実行しません。
3.1 静的ページ
前章の章番号が3.1だったので、おそらくは3.2が正しいと思われます。
内容的には特に不明な点はありませんでした。
3.2.1 静的なページの生成
記事にも説明がありますが、最後のコマンドはBitbucketへプッシュを実行するものなので、
は実行しません。
3.3 テストから始める
説明のみなので特にありません。
3.3.1 最初のテスト
リスト 3.12: GREEN
を実行すると、以下の文言が含まれるエラーが発生します。
パス部分は省略していますが、rake db:migrateを実行せよ、ということですので実行しました。
その後、
を実行すると以下のエラーが出ました。
そこで、
を実行したところ、
ということでしたので、Gemfileのtestに「gem 'guard’」を追加します。
全体としては以下のようになります。
書き換え後、
と実行後、
テストを実行すると、正常にテストを行うことができました。
3.3.2 Red
3.3.3 Green
特に詰まるポイントはありませんでした。
3.3.4 リファクタリング
説明のみなので特にありません。
3.4 少しだけ動的なページ
ようやく動的な要素が出てきましたね。
ここでの内容について、特に躓くポイントはありませんでしたが、実際にコードを書いた結果がわかりやすく反映される様は、僅かではあったとしても楽しくなってきます。
と
までは実行しましたが、それ以降は実行していません。
3.5.1 本章のまとめ
説明のみなので特にありません。
3.6 演習
特に問題なくできました。
回答は本記事には掲載しません。
3.7.1 minitestレポーター
特に詰まるポイントはありませんでした。
3.7.2 Backtrace silencer
私はクラウドIDEを使用していませんので、スキップしました。
3.7.3 Guardによるテストの自動化
3.3.1 最初のテストで問題となったguardについて記載があります。
こちらでリスト3.2においてguard gem をアプリ内に取り込み済みである、という記載がありますがリスト3.2の状態で
とすることで動かすことができるとあるのですが、guard gemはリスト3.2にはありませんので、下記のエラーになります。
ですので上記3.3.1の箇所で指摘した通り、guardを追加しておきましょう。
次回、「Ruby on Rails チュートリアル をやってみた その4 - IxD's blog」は
をやっていきます。
Ruby on Rails チュートリアル をやってみた その2
前回の「Ruby on Rails チュートリアル をやってみた その1 - IxD's blog」では第1章でしたが、今回は
こちらのチュートリアルをやっていきます。
今回はその2ということで、「第2章 Toyアプリケーション」です。
記事にはバージョン指定して
$ 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 マイクロポストのモデル設計
説明のみなので特にありません。
$ 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 継承の階層
説明のみなので特にありません。
$ 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」は
をやっていきます。