Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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からコマンドを実行していけば正常に動くようになります。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away