記録として一応残すのだけれど、 結局 twitter oauth だと mail address が返らないため、そのまま devise の流儀にあてはめることはできなかったりで hack が必要。 だからこの記事は思い出す様に残す。あてにはしないこと。

追加する gem はこんな感じ。omniauth- 各種は使うものだけでいい。

gem 'devise'
gem 'omniauth'
gem 'omniauth-hatena'
gem 'omniauth-github'
gem 'omniauth-twitter'
gem 'figaro'

bundle install したら、

rails g install:figaro

すると config/application.yml が作られて .gitignore にも

# Ignore application configuration
/config/application.yml

が足される。config/application.yml にはこんな感じで書く。

TWITTER_CONSUMER_KEY: "xxx"
TWITTER_CONSUMER_SECRET: "yyy"
GITHUB_CONSUMER_KEY: "zzz"
GITHUB_CONSUMER_SECRET: "aaa"

メールを使う場合はとりあえず config/environments/development.rb に以下を書いた。

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

config/environments/production.rb はそれなりに。

# Email
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { :host => config.app_domain }
config.action_mailer.smtp_settings = {
  address: 'smtp.gmail.com', 
  port: '587',
  enable_starttls_auto: true,
  user_name: '',
  password: '',
  authentication => :plain,
  domain => 'somedomain.com'
}

app/model/user.rb をちょっと修正

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_many :auths
end