Restful Authenticationプラグイン6 - お知らせメールの重複。 [プログラミング]
前回、Restful Authenticationでの、アクティベートのお知らせメールがログインする度に、メールを出してしまう癖を発見した。とりあえず、一番最初から、ミニマム設定でプロジェクトを作って、検証してみたいと思う。
config/environment.rbに追加。
config.active_record.observers = :user_observer
config/environment.rbに、ActionMailerの設定。
config/routes.rbに追加。
map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate', :activation_code => nil
config/environments/development.rbに追加。
config.action_mailer.raise_delivery_errors = true
app/models/user_mailer.rbの、@fromの部分を、<メールアドレス>でネスト。
@from = "<hogehoge@yahoo.co.jp>"
app/models/user_mailer.rbのYOURSITEの部分を'localhost:3000'に変更。
こう全部いっぺんに見ると、そんなにお手軽にできたわけじゃないのね。そうして新しく作った雛形は、やはりlogin時にアクティベーションが出来ましたメールが送られてきてしまう。何が悪いのだろう。これこそAASMを入れないと出てくるバグか? とりあえず、どこでメールが送られてくるのかをソースを見てみたい。まずは/loginからどう飛んでいるのか把握する。
/loginは、config/routes.rbに書いてあるのを見ると、「Sessions#new」に行くと書かれている。何もしてないので、new.erb.htmlに移動する。app/views/sessions/new.html.erbで、テキストボックスの情報を持ってどこかに行くんだけど、いまいち分からない。ログを見ると、Sessions#createに飛んでいるらしい。よくよく見てみると、セッションがない事がおかしいのかもしれません。
AASMがないから挙動がおかしいかもと、毎回言ってる気がするんですが、今回はその点が濃厚な気がします。クラス名からしてSessionsControllerですからねぇ。セッションが切れてたら、アクティベーションがされたっていう判断はおかしいし、やはり何でメールを出しているのだか意味不明。なので、次回はAASMを入れてやってみようかと思います。
AuthenticationをAuthentificationとしばらく思っていて、ありゃ全部間違ってると思ったら、Authentificationじゃなかったらしい。fiが入ってるかどうかなんだけど、どっちも言葉としてあるんだよねぇ。こういうのはtypoっぽくって気になっちゃう。ただ、それだけ…。
rails -d mysql mailtest cd mailtest ruby script/plugin install git://github.com/technoweenie/restful-authentication.git ruby script/generate authenticated user sessions --include-activation rake db:create:all rake db:migrate ruby script/server
config/environment.rbに追加。
config.active_record.observers = :user_observer
config/environment.rbに、ActionMailerの設定。
config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => 'smtp.mail.yahoo.co.jp', :port => 587, :authentication => :login, :user_name => 'username', :password => 'password' }
config/routes.rbに追加。
map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate', :activation_code => nil
config/environments/development.rbに追加。
config.action_mailer.raise_delivery_errors = true
app/models/user_mailer.rbの、@fromの部分を、<メールアドレス>でネスト。
@from = "<hogehoge@yahoo.co.jp>"
app/models/user_mailer.rbのYOURSITEの部分を'localhost:3000'に変更。
こう全部いっぺんに見ると、そんなにお手軽にできたわけじゃないのね。そうして新しく作った雛形は、やはりlogin時にアクティベーションが出来ましたメールが送られてきてしまう。何が悪いのだろう。これこそAASMを入れないと出てくるバグか? とりあえず、どこでメールが送られてくるのかをソースを見てみたい。まずは/loginからどう飛んでいるのか把握する。
/loginは、config/routes.rbに書いてあるのを見ると、「Sessions#new」に行くと書かれている。何もしてないので、new.erb.htmlに移動する。app/views/sessions/new.html.erbで、テキストボックスの情報を持ってどこかに行くんだけど、いまいち分からない。ログを見ると、Sessions#createに飛んでいるらしい。よくよく見てみると、セッションがない事がおかしいのかもしれません。
AASMがないから挙動がおかしいかもと、毎回言ってる気がするんですが、今回はその点が濃厚な気がします。クラス名からしてSessionsControllerですからねぇ。セッションが切れてたら、アクティベーションがされたっていう判断はおかしいし、やはり何でメールを出しているのだか意味不明。なので、次回はAASMを入れてやってみようかと思います。
AuthenticationをAuthentificationとしばらく思っていて、ありゃ全部間違ってると思ったら、Authentificationじゃなかったらしい。fiが入ってるかどうかなんだけど、どっちも言葉としてあるんだよねぇ。こういうのはtypoっぽくって気になっちゃう。ただ、それだけ…。
コメント 0