Rails5 でdeviseとomniauthを使用する

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

■Gemfile
[ruby]
gem ‘devise’
gem ‘omniauth’
gem ‘omniauth-twitter’
gem ‘omniauth-facebook’
[/ruby]

Deviseのインストール。

[bash]
$ 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
[/bash]

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

■config/initializer/devise.rb
[ruby]
Devise.setup do |config|
 ・・・
end
[/ruby]

■db/migrate/YYYYMMDDhhmmss_add_devise_to_users.rb
[ruby]
class AddDeviseToUsers < ActiveRecord::Migration[5.0]
 ・・・
end
[/ruby]

Userモデルを作成する。
[bash]
$ 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
[/bash]

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

[bash]
$ 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) ========================
[/bash]

■ハマった点。

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

[bash]
dynamic_matchers.rb:21:in `method_missing’: undefined method `devise’ for User
[/bash]

This entry was posted in Rails, Ruby, 技術情報. Bookmark the permalink.

コメントを残す

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