株式会社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 sやrake ~~~というコマンドが使用できなくなりました。
このときGemfileにはgem 'devise'と記述し、ターミナルでは以下のような履歴になっていました。
#ターミナル履歴
bundle install
rails g devise user
rake db:migrate
・・・あっ、rails g devise:installをしていない!
rails g devise installをしていないとrails sやrake ~~~とdevise ~~~などのコマンドが競合してしまい、すべてのコマンドが使用できなくなってしまうようです。
このエラーに対処するためにdeviseをbundle installの直後まで設定を戻してからもう一度deviseをインストールしました。
対処法
- routes.rbにある
devise_for :usersというコードを削除する(これでrailsコマンドが使えるようになります!) -
rake db:rollbackでマイグレーションファイルをロールバックする。(これをすることによって先ほど作ったuserテーブルのマイグレーションファイルをなかったことにしましょう。) - userテーブルを作ったときのマイグレーションファイルを削除する。
-
rails d model userを行いuserモデルを削除する。
これらの作業でdeviseをインストールする前の状態に戻ることができました。
以上の作業が終わったら、rails g devise:installからコマンドを実行していけば正常に動くようになります。