deviseの関連ファイルが作られず、コマンドが適用されなくなった時の対処法
deviseをインストールしているとconfig/initializers/devise.rb
と
config/locales/devise.en.yml
ファイルが生成されておらず、、さらにrails g devise user
やrails db:migrate:status
しても
NoMethodError: undefined method `devise' for Install (call 'Install.connection' to establish a connection):Class
というエラーが出ました。すでにuserモデル以外のデータべースは作ってあるのでrails db:migrate:status
が出来ないということはコマンドが適用されていないということだと思います。
同じ状態でbundle install
からやり直しても解決出来ませんでした。
考えた仮説
このときGemfileにはちゃんとgem 'devise'
と記述されていました。ターミナル履歴は以下の通りです。
#ターミナル履歴
bundle install
rails g devise:install
rails g devise user
rails db:migrate
ターミナル履歴におかしいところはない。
しかしconfig/initializers/devise.rb
と
config/locales/devise.en.yml
ファイルがインストールがされていないので、rails g devise install
に問題があるのではないか?
gemはローカルサーバーの再起動をしないと反映されないので、rails g devise install
の前に再起動をしていなかったのではないか?
解決方法
調べると、rails g devise install
が反映されていないとrails s
やrails g devise user
やrails db:migrate:status
など他のコマンドが競合してしまい、コマンドが反映されなくなってしまうようです。
参考記事 : https://qiita.com/ryouzi/items/9c5324ba567109ab2a22
具体的な対処法
1. もう一度bundle install
2. routes.rb
にあるdevise_for :install
もしくはdevise_for :users
というコードを削除する
3. 2でrailsコマンドが適用されるようになったのでrails db:rollback
でマイグレーションファイルをロールバックする。
4. rails db:migrate:status
でステータス確認
5. userテーブルやモデルが作られている場合はrails d model user
で削除
6. rails g devise:install
7. rails g devise user
8. rails db:migrate
最後に
プログラミングを始めて4週間の初心者なので、その目線でわかりやすく書くことを心がけました。
わかりにくい記述、間違っているところがあればご指摘ください。
最後まで見ていただきありがとうございました。
Author And Source
この問題について(deviseの関連ファイルが作られず、コマンドが適用されなくなった時の対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/LjxUqKPClab73ZX/items/fd1ce29cc9807f684941著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .