入会確認メール送信機能を追加

昨日の「Ruby on Rails Tutorialを試してみた」に引き続き、Ruby on Rails Tutorial: Learn Rails by Exampleのサンプルアプリ「sample_app」に、いわゆるアクティベーションを機能を追加してActionMailerの勉強をしました。
チュートリアルでは、入会すると自動的にログインしますが、ログインせずメールを送信し、メールに記載されたURLにアクセスすると、ユーザアカウントを有効にして、サインインできるようにしました。

サンプルアプリ

http://github.com/nkmrshn/sample_app

  • メールサーバのユーザ名・パスワードは、config/mail_example.ymlを修正して、config/mail.ymlを作成してください。
  • config/environments/development.rbで、GmailSMTPサーバを指定しています。他サーバを使う場合は、smtp_settingsなどを修正してください。
  • production環境下における、メールサーバの設定は何をしてませんので、必要であれば設定してください。

感想

Ruby on Rails Tutorialには、ActionMailerについては説明は無いので、ネットを検索するなどして作りました。

Ruby on Rails Guides: Action Mailer Basics

これは今でもよくわかっていないのですが、ActionMailerを継承したクラスでurl_forを使ってURLを生成する際、default_url_optionsが設定されていないと、

RuntimeError (Missing host to link to! Please provide :host parameter or set default_url_options[:host]):

と怒られてしまいます。config/environments/development.rbに、

config.action_mailer.default_url_options = { :host => "localhost:3000" }

と指定したんですが、なんでこんな仕組みになっているんでしょうか。

余談

Ruby on Rails TutorialのPDF版を購入したので、印刷してみたのですが...500ページもあり、且つ、インクジェット用の紙に印刷したので、百科事典サイズになってしまいました。
Kindleが欲しい。