Rails5 でdeviseとomniauthを使用する

2017年1月30日 Posted by PURGE

Gemfileに必要なモジュールを記述する。

■Gemfile

gem 'devise'
gem 'omniauth'
gem 'omniauth-twitter'
gem 'omniauth-facebook'

Deviseのインストール。

$ rails g devise:install
Running via Spring preloader in process 3689
Expected string default value for '--jbuilder'; got true (boolean)
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml

deviseの設定ファイルが生成される。

■config/initializer/devise.rb

Devise.setup do |config|
 ・・・
end

■db/migrate/YYYYMMDDhhmmss_add_devise_to_users.rb

class AddDeviseToUsers < ActiveRecord::Migration[5.0]
 ・・・
end

Userモデルを作成する。

$ rails g devise User
Running via Spring preloader in process 3757
Expected string default value for '--jbuilder'; got true (boolean)
      invoke  active_record
   identical    db/migrate/20170130065955_add_devise_to_users.rb
      insert    app/models/user.rb
       route  devise_for :users

DBのマイグレーションを実行。

$ rails db:migrate
== 20170130065955 AddDeviseToUsers: migrating =================================
-- change_table(:users)
   -> 0.3352s
-- add_index(:users, :email, {:unique=>true})
   -> 0.0278s
-- add_index(:users, :reset_password_token, {:unique=>true})
   -> 0.0336s
== 20170130065955 AddDeviseToUsers: migrated (0.3970s) ========================

■ハマった点。

下記のエラーに悩まされた。
上記を順番通りに実行すれば、問題ないはず。

dynamic_matchers.rb:21:in `method_missing': undefined method `devise' for User

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です