RubyMine で Rails Tutorial 10章

10章

まず、partial に切り出すところはこんな感じになるでしょうか。

new.html.erb にて、form_for 周りを選択します。

右クリックから Refactor → Extract → Partial で切り出します。

名前をつけます。チュートリアルに従って _form.html.erb とします。

これで切り出せました。

あとは少々調整します。new.html.erb と edit.html.erb の差分を見て、共通化できる部品を活かして、違うところは provide で渡します。
このスクリーンキャプチャでは form_for の一つ上も切り出してしまったのですが、gravatar_for があることに気が付いて調整しています。

new.html.erb

edit.html.erb

_form.html.erb

10.1.3 の演習では、テストを追加します。
わたしはブラウザに Chrome を使っているのですが、実際にエラー画面を表示させて右クリックから「検証」をするとこのようになります。

div.alert を指定すればいいということがわかるので、assert_test に追加します。

10.2.3 の演習でもテストを追加するのがありました。

/users/1/edit にアクセスする → ログインが求められる → ログインしたら /users/1/edit に戻って編集できるようになる、という確認で、ログイン前後での session[:forwarding_url] の値をチェックしておきましょうというテストです。
こんな感じにしてみました。

リスト 10.39 の CSS では $gray-lighter を使っていますが、Bootstrap 4 にはありません。上の方で定義しておきます。

10.3.1 のテストは、右上のメニューのところがログインしていないときとログインしたときで変わるというのを追加してみました。

ログインしていないとき

ログインしたとき

site_layout_test.rb

10.3.3 では will_paginate を使います。bootstrap-will_paginate では Bootstrap 4 に対応していないようなので、will_paginate-bootstrap4 を使ってみました。

10章で Gemfile に追加した部分

リスト 10.48 では div.pagination の要素があることを確認していますが、will_paginate-bootstrap4 では div ではなく ul になっていました。

リスト 10.56 のテストはこう書きました。admin 属性を変更しようとしてもできません、というものです。

10章は長い道のりでした。テストを書きながら実際に動かして進めていくと楽しいですね。

RubyMine で Rails Tutorial 9章

9章

特に RubyMine の使い方としてどうこうということもなくなってきました。
淡々と進めていきます。内容は結構難しいと思います。

リスト 9.27

リスト 9.28

全般的に難しいセクションだったと思います。

if (user_id = session[:user_id]) … というコードはわたしはあまり好きではないです。バグを産みやすいです。

RubyMine で Rails Tutorial 8章

8章 はログインについて。

もうだんだん RubyMine ではというものはなくなってきました。
淡々とチュートリアルをこなしていきます。

リスト 8.19 の _header.html.erb では、Bootstrap 4 だとドロップダウンのリンクがうまく出ません。
このように直してみました。

リスト 8.20 の app/assets/javascripts/application.js については、特に記述不要です。

こんな感じで表示されるようになりました。

RubyMine で Rails Tutorial 7章

7章

RubyMine で開きたいファイルを探すときは、shift を2回押すのが便利です。
ファイルに限らず、だいたいのものは探せます。

debug は RubyMine にもあるのですが、まだ使い方がよくわかっていません。
チュートリアルにあるように、byebug を使って debugger を埋め込むやり方のほうが手軽のようです。

new.html.erb を動かしたときに、フォームが真ん中に来ませんでした。

Bootstrap 4 のマニュアル を見ますと、offset-md-3 となっています。そのように修正します。

今度は真ん中に来ましたね。

Bootstrap のグリッドシステムでは、ブラウザの幅に応じてレイアウトを変えてくれるようになっています。
ここでは md だけ指定していますが、同時に複数の種類の class を指定することもできます。

col-md-6 offset-md-3 というのは、全体の 12 分割をどう使うかという指定です。
幅が6つ分の要素を作って、左に3つ開けるということで真ん中にくるようにしています。

エラー画面を作るところでは、.has-error がないと怒られました。

これも Bootstrap のマニュアルを見ると、:invalid に置き換わったようですね。そのように修正します。
. でなくて : で始まるクラス名になっているのは要注意です。

リスト 7.25 のテストを直すところは、こんな感じにしておきました。
_error_messages.html.erb に対応して、エラーとなったときに出てくるということです。

リスト 7.34 のテストは、ヒントに従って空文字列かどうかをチェックするようにしてみました。
成功していれば何か入ってますよということです。

最後に、production 環境で SSL 化して終わりです。
Webサーバは Rails 5.2.0 では Puma になっています。

RubyMine で Rails Tutorial 6章

6章やりますか。

Model を作ります。

db:migrate も右クリックからのメニューで実行できます。

チュートリアルでは DB Browser for SQLite が紹介されていますが、RubyMine でも右のほうにある Database メニューから DB を見ることができます。

+ボタンから Data Source → Sqlite を選択します。

ダイアログで右のほうにあるファイル選択ダイアログを開いて、DB のファイルを選択し、
RubymineProjects/sample_app/db/development.sqlite3 を選びます。

Test Connection を押して接続も確認しましょう。

先ほど作った User モデルに対応する users テーブルが見えるようになっています。
ダブルクリックすると select 文が実行されて中身が表示されますが、まだデータを入れていないので空になっています。

User モデルのテストを書きながらモデルも直していくという形で進めていきますが、RubyMine 上で簡単に行き来することができます。

テスト側からは、コマンドキーを押しながら User をクリックすると user.rb に移動できます。
user.rb からは、Goto → Test です。shift + command + T みたいですね。

ここまでは GUI でできるだけ操作するようにしてきましたが、Terminal でやっても同じです。
キーボードを打つほうが早いことも多いですし、そのときに慣れた方法を選んで使えばいいと思います。

最後はユーザを一つ作って終わりです。rails console も RubyMine の中から実行できます。

DB を確認すると正しく一つ入っていることが確認できます。