なかなか発見できなくて詰まったので備忘録的に残しておく。
devise_token_auth 利用時にemailでの認証を追加するときに大きく詰まった。やりたいことは単純で以下の2ステップ。
- mailcatcher環境をローカル構築
- deviseでメール認証を可能に
順にまとめていく。
mailcatcher環境の構築
mailcatcherの説明は次の通り
MailCatcher runs a super simple SMTP server which catches any message sent to it to display in a web interface. Run mailcatcher, set your favourite app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server, then check out http://127.0.0.1:1080 to see the mail that's arrived so far.
試したこと
readmeに書かれている通りの手順で構築できるかをまずは試した。しかしこれは失敗。mailcatcherはうまく立ち上がるんだけど、sinatraを入れたせいで、rails sercer
コマンドを叩くとエラーが出るように。確かにわざわざrails環境で用意する必要も無いと思ったので、違う方法を考えることにした。(この辺詳しい人いたら教えて欲しいです。。)
実際の環境
git clone https://github.com/sj26/mailcatcher.git
cd mailcatcher
bundle
bundle exec ./bin/mailcatcher -f
もしもうまくいかなかった場合は、
bundle install sinatra
でsinatraをインストールしてもう一回試してみることをおすすめします。
この手順に沿っていけば、smtpサーバーが構築できる。アドレスは最後のコマンドを実行した時に出力される以下。httpの方は送信されたメールを確認するブラウザ。
smtp://127.0.0.1:1025
http://127.0.0.1:1080
とはいっても、何故か僕の環境では、うまくブラウザ経由でみれなかったので、以下のコマンドからAPI経由で確認している。
curl -s localhost:1080/messages
# [{"id":1,"sender":"<from@example.com>","recipients":["<to_address@example.com>"],"subject":"test subject","size":"290","created_at":"2017-02-12T07:43:54+00:00"},{"id":2,"sender":"<from@example.com>","recipients":["<to_address@example.com>"],"subject":"test subject","size":"289","created_at":"2017-02-12T07:44:46+00:00"}]
これでmailcatcher環境が構築できたので、次はdevise_token_auth側の設定
devise_token_auth側の設定
ありがちなエラーみたいで、色んな情報が載っていて振り回されまくった。ちなみにずっと出てたエラーは以下
Unpermitted parameter: registration
「お、ストロングパラメーター関係やーん!」って思って色々ぐぐってたけど、結局全然違った。
解決方法
僕の解決方法は次の通り。
# 以下を追加
config.default_confirm_success_url = "confirmed"
以上!ストロングパラメーターでもなんでもなかった。こいつはここに書かれているパラメーターなんだけど、これを設定することで全てが解決した。