Ruby
Rails
devise
bcrypt

Windows+Rubyinstaller(ruby2+rails4)でのDeviseを使ったrake db:migrateが通らない時の解決法

More than 3 years have passed since last update.

自分用なんでめっちゃ適当です。

上記環境で普通にbundle installしてrails g devise Modelでmigrateファイルを生成して、rake db:migrateすると
no such file to load -- bcrypt_ext(bcryptだったり2.0/bcrypt_extだったり)でmigrateが通りませんでした
その時の解決法

gemを確認

ruby本体のディレクトリをたどっていてgemファイルが格納されてる場所を探します。(パス分からない人はググれば出てくる)
で、その中からbcrypt-rubyを探します。
普通にbundle install任せだとbcrypt-ruby-3.0.1-x86-mingw32みたいにバージョンの後になんかついてるのがインストールされてます。
こうなってて上に書いたエラーが出た人はこの方法で通るようになります。

bcrypt-rubyをアンインストール

gem uninstall bcrypt-rubyを実行しbcrypt-rubyをアンインストール。
複数のバージョンが入ってる場合はどれ消す?みたいなこと聞いてくるのでallを選びましょう。
1つしか入ってない人は何も聞かれず削除されます。

bcrypt-rubyをインストール

gem install bcrypt-ruby --platform=ruby --no-ri --no-rdoc -v 3.0.1を実行
なぜ3.0.1かというとver指定せずにインストールすると3.1.0がインストールされるのですがそれだと怒られちゃいます。
3.0.1入れろゴルァって言われるので3.0.1です

終了

とりあえずこれで治ります。(少なくとも自分は)
修正以前に使ってたrailsプロジェクトは削除して新規作成しましょう。
そのまま使うとnameErrorとか吐かれてめんどくさいので。

参考元 ==> http://stackoverflow.com/questions/16945291/bcrypt-error-devise-ruby-2-0-and-rails-4-0

追記

Windows環境だとめんどくさいトラブル起きやすいのでVirtualBox(以下VB)上でUbuntuなりDebianなりCentOSなり動かしてそちらで実行したほうが楽です。
VBにはホストOSとクライアントOS双方向のファイル同期機能がありますしSSHで接続も簡単なのでWindowsで編集→VB上のLinuxで実行
Ubuntuを使う場合Server版はおすすめしません(自分の環境だとapt-get install/git cloneしたパッケージが再起動するとファイルごと消えるという現象が発生しました)のでUbuntuを使うならDesktop版。
GUIが嫌な人はDesktop版のGUIを切るか同系列のDebianを使いましょう。