189
164

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2015-09-19

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

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら弊社HPからご相談をいただけますと幸いです。
以下のような問題に対応することが可能です。

  • プロジェクトでRailsエンジニアが足りなくて困っている
  • Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
  • オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら弊社HPからご連絡いただけますと幸いです。

前提

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?