- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (8件) を見る
非常に内容の濃い、いい本でした。
RailsだけにとどまらずChef/Vagrantなどにも言及されていて、めちゃくちゃ読み応えがあります。
以下、自分用メモ。
Part1 Rails ~ overview
・1章 Ruby on Railsの概要
・2章 Ruby on RailsとMVC
ここは大体既に知っていたことなのでさらっと読みました。
(Strong Parametersの説明などちゃんとされています)
ActiveRecort::Relation(p.49) の説明のところは知らなかったです。
* ActiveRecordに対してQuery Interfaceが呼ばれるとActiveReocrd::Relationのインスタンスが生成される * ActiveRecord::Relationに対して繰り返しQuery Interfaceを呼び出すことができる * 繰り返し呼び出したQuery IntefaceはActiveRecord::Relationのインスタンスに蓄積され、どんなSQLを発行するかの情報が更新されていく * 実際にデーガが必要になった時点で、蓄積された情報を基にSQLを発行し、データを取得する
Part2 実践テクニック
・3章 アセット
・4章 Railsのロードパスとレイヤーの定義方法
・5章 開発を効率化するgem
この辺りから、読んでよかったありがとうございますな感じになってきます。
3章のアセットはRails始めてやる人は大体ハマるはずなので
こんだけ纏まって書かれていると有り難いはず。
Sprockets ディレクティブ一覧(P.100)
基本的にちゃんと知らなかったです。
require_directory(ディレクトリ直下。挿入される順はアルファベット順)/ require_tree(require_directory再帰的)
require_self(複数のディレクティブを記述している時に、自信が読み込まれる順番を指定したい場合に利用する)
など
プリコンパイル対象の追加(P.104)
config.assets.precompile += %w( search.js )
minify無効化
config.assets.js_compress = nil
CoffeScript
-> アロー
=> ファットアロー
と呼ぶのか
CoffeScript SourceMap(P.113)
JSとCoffeeをマッピング gem 'coffee-rails-source-maps', group: [:dvelopment]
3-3. Sass (P.114)
ディレクティブの説明があってめちゃ親切。
3-4. Turbolinks(P.124)
注意事項などピックアップされています。
- 動作概要、注意点(preventDefault、data-remoteなどは動作しない、グローバル変数要注意)
- 無効にするにはdata-no-turbolink // apllication.js、gemから削除
- Turbolinksのイベント一覧
- jquery-turbolinks Turbolinksの新しいイベント定義とは別に(既存資産を活かすために)jQuery.ready()のイベントハンドラを呼び出してくれるgem
- インラインjsの実行を抑止(data-tubolinks-eval=false)
- documentオブジェクトに対するイベント定義はまずい($(document)、data-tubolinks-eval=falseで回避)
余談ですが、asset piplineからturbolinkの考えに行き着くのは理解できますが
tubolinkが本当に必要なのかっていうのは個人的には疑問です。
オートローディング(P.131)
- libディレクトリそのものをautoloads_pathsに突っ込まない方がよい(lib以下にはRakeタスクが存在するため)
autoloads_paths += %W(#{config.root}/lib/autoload)
- 新しいレイヤーの配置 appディレクトリ以下にサブディレクトリを作成し、autoload_pathsに追加
4-2.レイヤーを追加するgemの例(P.134)
active_decorator、sidekiq ともに初めて触りましたが、よさそうです。
5.開発を効率化するgem
- pry-rails、pry-byebug
- better_errors、binding_of_caller
これすごくいいです。ブラウザでrepl操作できるとか、びっくりしました。
Part3 実践Webアプリケーション開発
・6章 Railsアプリケーション開発
・7章 Railsアプリケーションのテスト
・8章 Railsのインフラと運用
ここからチュートリアルです。テストの書き方もしっかりあります。
OAuthを使った実践的な内容で、ominiauth-twitter初めて触りました。
結構Rails触りはじめの頃、チュートリアルやっててcss触るのが面倒だなと思ったのですが
最近はbootstrap使えるのでとても楽ですね。
あと rails g resource って知りませんでした。
6-9 落穂ひろい、6-10 gemで機能拡張をする
この辺り、全く知りませんでした。
[WARNING] Could not load generator "generators/rspec/install/install_generator". Error: uninitialized constant RSpec::Support.
shoulda-matchers (P.249)
validationを簡潔にする。めっちゃすっきり。
it { should validate_presence_of(:name) } it { should ensure_length_of(:name).is_at_most(50) }
factory_girl(P.252)
FactoryGirlの省略。
config.include FactoryGirl::Syntax::Methods
pryのバグ
binding.pryを覚えたので、rspecのdebug時に使っていると下記エラーが表示されていました。
(pry) output error: #<NoMethodError: undefined method `pager' for nil:NilClass> [2] pry(#<RSpec::ExampleGroups::Nested::Twitter>)> puts page
どうやらpryの最新では問題となるようなので、downgradeして解決。
Pry 0.10.0でundefined method `pager' - PILOG
7.8 poltergeist(P.261)
これも初めてさわりました。phantomJSを利用するテストツール。
database_cleaner使ったり、いろいろ必要なのですが、一通り説明してくれてます。
Part4 一歩先行くRails
・9章 より実践的なモデルの使い方
・10章 Railsを拡張する
Concernに関する内容やRailsの拡張の話は、読み応えありました。
9.2 EachValidatorクラス (P.338)
ActiveModel::Validator(P.340)
9.3 ActiveModel (P.343)
9.4 値オブジェクト composed_of(P.356)
使ったことなかったですが、いろんなところで使えそうです。
9.5 Concern (P.358)
Module#concerning
ある程度の規模を持った一連の振舞に対して、その部分を抽出するような場合
Rack Middleware
Railtie
Railsのコアを拡張、Rakeタスク、Rack Middlewareを追加
Engine
Mountable Engine
Engine + Railsアプリとして必要となる機能を内包