Railsチュートリアル 8章完了まで

Railsチュートリアル、8章まで完了しました

bootstrap先生のパワーもあるとは思いますが、
見た目的にもそれっぽくなってきたような気がします。

ここまでで気付いたところなど。

scaffoldって使わない?

まだ先の章を見ていないのでなんともいえませんが、
scaffoldが登場しないなとふと気づきました。

初心者向けの書籍やサイトを見ていると必ずといっていいほど

  1. rails new
  2. rails g scaffold
  3. Railsの凄さの片鱗を味わえるでしょうどうのこうの

といったパターンが多いと思います。

そういうもんなのだな、と勝手に思っていましたが、
今のところRailsチュートリアルでは出番なしです。

ふと、scaffoldって実務だと使わないのか?という考えにいたり、
調べていると、参考になりそうなエントリがいろいろと。。

RailsのScaffoldは単なるマーケティングツールで実際の開発では使わない? - QA@IT

Rails Q&A「Scaffoldで作成されるテストはそのまま使うべきか?」 - give IT a try



いまのところ
「使わないことはないけど、フル活用するわけではない」
と勝手に解釈しています。

たしかに初めてscaffoldを使ってみたときには、「すげー!』と思いましたが、
勝手にあれだけの量のソースを生成されるのは若干不気味な感じもしました。

個人的には1つずつアクションを作っていくほうが好みかも?

remember_token を追加する箇所が通らない

Userモデルに remember_tokenというカラムを増やすところで、
なんだかうまく追加できない事象に陥って少しハマりました。

結果、以下手順で解決

  1. rails sでサーバを起動している場合、一旦止める
  2. rake db:migrate:reset
  3. rake db:migrate:reset RAILS_ENV=test

ポイントは

  • いちどサーバを止める
  • test環境向けにもmigrateを流す

の2点でした。

普通にやっていれば問題なくいけるのだと思いますが、
私の場合、一度空のmigrationファイルを実行してしまってからおかしくなりました。

上記 remember_token のテストでコケる

8.18、以下テスト実行です

rspec spec/models/user_spec.rb

エラー内容

`method_missing': undefined method `its' for RSpec::ExampleGroups
::User::RememberToken:Class (NoMethodError)

原因

stackoverflow.com

itsメソッドがRspec3.0以降で消滅しているらしい。
expectを利用した形式に書き換えればokだった。

(チュートリアル内にも、"itsはこれと同義だよ!"みたいな記述はある)

ただ、ワンライナーを意識する場合には以下のように置き換えるといいっぽい

it { is_expected.not_to be_blank }

database_cleanerがインストールできない

GemfileにGithubへのURLも記載しているが、いらないっぽい

gem 'database_cleaner', github: 'bmabey/database_cleaner'

gem 'database_cleaner'

8章まで終えて

アプリ固有のモジュールってどこにおけばいいんだ?
というのがいまひとつ解ってなかったのですが、
普通にHelperに書いても良い感じなのですね・・・

viewからの参照用のメソッドのみを定義するものかと思ってたのですが、
普通にcontrollerでincludeして使っていい感じのようです。

(お仕事で利用されている方からしたらどうなのでしょう?)

とはいえ、大きいモジュールになってくると
なんでもかんでもHelperにいれてたら大変なことになりそう。

concernを使う?lib配下に置くのか?

課題として覚えておこう・・・