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