これに行ってきた。
会場を提供してくださった リクルートライフスタイル様、ありがとうございました。
概要
機能、使い方
読む所
https://github.com/rails/rails/blob/4-1-stable/actionmailer/lib/action_mailer/preview.rb
コードリーディングの進め方
パーフェクトRailsの著者の一人であるWillnetさんがPCをプロジェクターに映して解説しつつ読み進め、機能に詳しくてrailsのコミットログしょっちゅう読んでるy_yagiさんが補足説明するという豪華なスタイル。それを参加者が見つつなんか言いつつという方式で進めていた。
コードリーディング
今回のスコープだが、ここだけ読んでもピンとこない。
実際にアプリからpreviewを開いてログを見てみると、railtiesのmailers_controller.rbが実行されていることがわかる。
なので、そこと合わせて見る。
Started GET "/rails/mailers/user_mailer/mail2?part=text%2Fplain" for 127.0.0.1 at 2014-06-17 19:54:00 +0900
Processing by Rails::MailersController#preview as HTML
Parameters: {"part"=>"text/plain", "path"=>"user_mailer/mail2"}
Rendered user_mailer/mail1.html.erb (0.1ms)
Rendered user_mailer/mail1.text.erb (0.0ms)
UserMailer#mail1: processed outbound mail in 14.1ms
Rendered text template (0.0ms)
Completed 200 OK in 17ms (Views: 0.5ms | ActiveRecord: 0.0ms)
Started GET "/rails/mailers/user_mailer/mail2?part=text%2Fhtml" for 127.0.0.1 at 2014-06-17 19:54:04 +0900
Processing by Rails::MailersController#preview as HTML
Parameters: {"part"=>"text/html", "path"=>"user_mailer/mail2"}
Rendered user_mailer/mail1.html.erb (0.1ms)
Rendered user_mailer/mail1.text.erb (0.0ms)
UserMailer#mail1: processed outbound mail in 13.4ms
Rendered text template (0.0ms)
Completed 200 OK in 16ms (Views: 0.3ms | ActiveRecord: 0.0ms)
ActionMailer::Preview.all
は作成したpreview配下にあるファイルを全部とってきてるのがわかる。indexメソッドのテンプレートはこれ。
で、その後にメールのタイトルと本文をとってきてこれに表示させてる感じ。あとはプレーンテキストかHTMLで表示するかを条件分岐してて、これをparamsからとってきてる。
mailer_previewのroutingはここで追加されてて、Rails.env
がdevelopment
だとroutingが動的に追加されるようになってる。welcomeページと一緒。
感想
Railsに詳しい人が解説しながら読み進めてるのを見るのは非常に楽くて勉強になった。ソースの難易度や規模的にも丁度良い感じだったと思う。(自分はアホなので予習しないとたぶんついていけなかったけど)またやってほしいです。
余談
少し時間が余ったので、メール周りの話になった
開発中のメールを飛ばして閲覧できる(Fake SMTP Server + α)
- サービス
- gem
- fgrehm/letter_opener_web(Rails)
- tyabe/letter_opener-web(Sinatra)
- tyabeさんが、letter_opener_webがRailsベースなのが嫌でSinatraベースで作った
- http://qiita.com/tyabe/items/a11e01f6682e3bcbc0aa