BCrypt::Errors::InvalidHash (invalid hash):が出たときの対処法




 

 

RailsアプリをHerokuにデプロイしていじっていると、次のやばそうなエラーが発生しました。

BCrypt::Errors::InvalidHash (invalid hash):

ログを確認してみると、user_controller.rbのloginアクションで問題が起きているようでした。

具体的なエラーの発生箇所の行を見てみると、

 

でエラーが発生しているようでした。

こちらは以前紹介した場合bcryptというユーザーのパスワードを暗号化するときに使ったもの。

暗号化したパスワードを使ってログインする時に問題が生じているようでした。

以前書いた記事を読み返して、スクリプトの記述にミスがないかチェックしましたが、問題ありません。

authenticateのスペルも三度見しましたが間違いありません。

 

なんでだろうと思ってHerokuのDataclipsを使ってデータベースを確認してみると、

userテーブルに問題発見。

password_digestカラムが空欄のユーザーが数名おったのです。

 

もしかしたら、password_digestカラムが空欄のユーザーがいるからauthenticateメソッドでエラーが起きてしまったのでは・・・・

と思いデータベースをリセットすることに。

なぜこのようにpassword_digestカラムが空欄のユーザーがいたかというと、途中でpasswordカラムを削除し、password_digestカラムに切り替えたためです。

 

こちらの記事によると、Herokuデータベースのリセット方法は

というコマンドで良いみたいでした。

実際にやってみると、エラー解決です!

 

やはりHerokuにデプロイしたあとはデータベースをチェックすることも大事。

そこにエラーの原因が眠っていることが多々あります。

BCrypt::Errors::InvalidHash (invalid hash):

でつまずいている方はデータベースを確認し、必要に応じてリセットしてみてはいかがでしょう。

 

それでは!

Lin

Pocket
LINEで送る




音生入力で楽にブログを書く技が満載!
ブログ音声入力術

音声入力の使い方から文章を書くコツまで完全網羅。ブログを書きたいすべての人向けの電子書籍




コメントを残す

メールアドレスが公開されることはありません。