RubyMine で Rails Tutorial DB接続について

Heroku (production) 環境でのDB接続について、PostgreSQL を使えていなかったようです。

addon として提供されていまして、無料の hobby-dev プランで作成しました。

heroku config すると、DATABASE_URL の変数が生成されていることがわかります。
これを config/database.yml に渡します。

あとは heroku に push すれば、使えるようになります。

チュートリアルのサイトには記載がないようです。Heroku のマニュアルで調べましょう。

RubyMine で Rails Tutorial 12章

12章をやります。

リスト 12.4 では、これまでやってきたように Bootstrap 4 に対応する形で class を書き直します。

リスト 12.18 はちょっと難しいですね。
get 〜 や post 〜 などでアクセスして assert_xxx で確認、というのを繰り返しているので、区切りながら読むといいと思います。

リスト 12.20 の演習はこんな感じにしました。

RubyMine だと : を => にするかとアドバイスが出てきますが、好みでいいと思います。

変えた場合はこのような書き方になりますね。わたしは : の書き方のほうに戻しておきました。

リスト 12.21 のマッチさせる文言はヒントにあるそのままですね。
password_resets_controller.rb の check_expiration メソッドで flash[:danger] として出しています。

演習の4つ目は、パスワードがリセットされたら reset_digest が nil になっていることを確認するというテストを追加します。

なかなか難しかったですね。
一からここまで考えてあれこれ作るのは大変だと思います。とても参考になります。

RubyMine で Rails Tutorial 11章

11章 やります。

メールでアクティベーションするというものですね。

Action Mailer は仕事でも使ったことがあります。監視ツールを作ったことがありまして、メール通知するのに使いました。
ERBで書けるので、これまで進めてきた Web の view と同じような感覚で作れます。

メールのプレビューは知らなかったです。これは便利ですね。

users_login_test.rb のテストが一つ通らなくなりました。

リスト 11.32 は 9.3 の課題 でやった assigns() への対応が反映されていないので、そのままだとこのようにエラーになります。

同様にメンバ変数として参照するように修正しておきます。

リスト 11.39 はこう書きます。

11.40 はこんな感じにしました。
activated が true のものだけを扱うということですね。

最後の SendGrid addon は、Heroku にクレジットカードを登録する必要がありました。

Heroku の Manage Account の画面から登録すれば使えるようになります。

config/environments/production.rb を設定します。
Heroku でのアプリケーションのURLを host に設定する必要がありますが、heroku open するとブラウザが開くのでわかりやすいでしょう。

このURLを production.rb に書いておきます。

実際に Heroku に deploy して、ユーザ登録を試してみます。

メールもちゃんと来ました。

リンクを踏んでユーザ登録完了です。ちゃんと動いてますね。

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]) … というコードはわたしはあまり好きではないです。バグを産みやすいです。