LoginSignup
189
164

Ruby on Railsでgemのdeviseをインストールした直後のエラー

Last updated at Posted at 2015-09-19

株式会社TECH LUCKという会社で代表兼エンジニアをしている齊藤です。

deviseをインストールして作業していたところ以下のようなエラーがでてきました。

ターミナル
'method_missing': undefined method 'devise' for User (call 'User.connection' to establish a connection):Class (NoMethodError)

このエラーが出続けるのでrails srake ~~~というコマンドが使用できなくなりました。
このときGemfileにはgem 'devise'と記述し、ターミナルでは以下のような履歴になっていました。

ターミナル
#ターミナル履歴
bundle install
rails g devise user
rake db:migrate

・・・あっ、rails g devise:installをしていない!
rails g devise installをしていないとrails srake ~~~devise ~~~などのコマンドが競合してしまい、すべてのコマンドが使用できなくなってしまうようです。
このエラーに対処するためにdeviseをbundle installの直後まで設定を戻してからもう一度deviseをインストールしました。

対処法

  1. routes.rbにあるdevise_for :usersというコードを削除する(これでrailsコマンドが使えるようになります!)
  2. rake db:rollbackでマイグレーションファイルをロールバックする。(これをすることによって先ほど作ったuserテーブルのマイグレーションファイルをなかったことにしましょう。)
  3. userテーブルを作ったときのマイグレーションファイルを削除する。
  4. rails d model userを行いuserモデルを削除する。

これらの作業でdeviseをインストールする前の状態に戻ることができました。
以上の作業が終わったら、rails g devise:installからコマンドを実行していけば正常に動くようになります。

189
164
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
189
164