=======
deviseのインストール
gem 'devise'
$ bundle install
$ rails g devise:install
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.default_url_options = { :host => 'appname.herokuapp.com' }
root :to => "top#index"
ここでは仮にtop#indexをルートパスに指定。
<%= notice %>
<%= alert %>
メッセージを表示したければ↑
Herokuの場合、以下の設定が必要
config.assets.initialize_on_precompile = false
deviseでUserモデルを作成
$ rails g devise User
とすると、user.rbモデルとマイグレーションファイルが生成されますが、まだmigrateは行わないで下さい。
devise :database_authenticate, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable # confirmableを追加
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
viewの生成
$ rails g devise:views
<% if user_signed_in? %>
<li><%= link_to "Logout", destroy_user_session_path, method: :delete %></li>
<% else %>
<li><%= link_to "Login", new_user_session_path %></li>
<% end %>
before_filter :authenticate_user!
development環境で確認
$ rake db:migrate
$ rails s
サインアップすると、標準出力に
Confirm my account
とURL(localhost)が出力されているので、そのURLにアクセスして、登録したアカウントを有効化する。
Herokuで確認(メールを送信するまで確認)
導入方法は2つあります
- Sendgridのプラグインを導入する
- gmailのsmtp認証を使う
今回は1のSendgridで進めます。
以下のコマンドは、herokuのアカウントでSendGridのアドオンの利用登録(クレジットカードの登録)を済ませておかないと叩けません。無料枠でも利用するには登録が必要みたいです。
$ heroku addons:add sendgrid:starter
すると自動的にHerokuでSendGridのアカウントが取得されます。
アカウント名とパスを表示するには、
$ heroku config:get SENDGRID_USERNAME
$ heroku config:get SENDGRID_PASSWORD
を実行します。
SMTP認証が有効になるまで2時間ほどかかる場合もあるかもしれません。
ちなみに、こちらのユーザ名、パスワードでSendgridのWEBページにログインできます。
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:user_name => "yourSendGridname you get from heroku",
:password => "yourSendGridname you get from heroku",
:domain => "heroku.com",
:address => "smtp.sendgrid.net",
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true
}
config.mailer_sender = 'noreply@yourdomain'
最後にデプロイして正常にDeviseが導入できたか確認する
$ git push heroku master
$ heroku run rake db:create
$ heroku run rake db:migrate
おまけ
- 必ず.gitignoreに以下のフォルダを無視するように設定すること。
/public/assets/*
これでサインアップ時に、登録したメールアドレスにアカウントを有効にするURLが記載されたメールが届きます。
アクセスしてログインできれば設定完了です!