2012-02-19 6 views
12

モデルにhas_secure_passwordを追加すると(ActiveRecord :: Baseから継承)、 "bcrypt-rubyがバンドルの一部ではない"というエラーが発生します。"bcrypt-rubyがバンドルの一部ではない"というエラー、bcrypt-rubyをどのようにGemfileに追加できますか?

ここでログは次のとおりです。

Started GET "/users" for 127.0.0.1 at 2012-02-19 16:37:12 +0900 

Gem::LoadError (bcrypt-ruby is not part of the bundle. Add it to Gemfile.): 
app/models/user.rb:3:in `<class:User>' 
app/models/user.rb:1:in `<top (required)>' 
app/controllers/users_controller.rb:1:in `<top (required)>' 

私は

$ gem install bcrypt-ruby 
Building native extensions. This could take a while... 
1 gem installed 
Installing YARD (yri) index for bcrypt-ruby-3.0.1... 
Installing RDoc documentation for bcrypt-ruby-3.0.1... 

でbcryptのルビーをインストールしたが無駄ではなかったです。

私は

$ bundle exec rails server 

を試みたが、何の助けませんでした。

「has_secure_password」という行をコメントアウトすると、このエラーは発生しません。

どうすればこの問題を解決できますか?メッセージは、あなたがのルートでごGemfile(にbcryptの-ルビーを追加する必要が言うように、あなたのGemfileに

答えて

13

からの行を追加します。プロジェクト)。

gem "bcrypt-ruby" 

を追加してから(あなたはすでにそれをインストールしていなければ、これは宝石をフェッチします)bundle installはトリックを行う必要があります実行しています。

あなたはに特定のバージョン、例えば

gem "bcrypt-ruby", "~> 3.0.1" 

あなたにある最新バージョンを取得します> = 3.0.1へのが、3.1未満を指定することができます。 3.0.1にあなたが依存しているバグフィックスがあって、さらにバグ修正をしても大丈夫だが、大きな変更を望まないなら、これを行うかもしれません。 bundlerウェブサイトにはさらに詳しい情報があります。

6

gem 'bcrypt-ruby' 

し、コマンドライン

bundle install 
23

すでにGemfileにgem 'bcrypt-ruby', '~> 3.0.0'があり、すでにコマンドbundleを実行していましたが、まだそのメッセージがあります。問題は、私は、サーバーの再起動を忘れてしまったということでした。

touch tmp/restart.txt 
+2

私は全く同じ問題を抱えていました。サーバーを再起動することは私のトリックでした。 – Raj

1

サーバーを再起動すると、正しい順序でバンドルを再インストールし、それは次のようになります。

bundle install, bundle update, bundle install 

し、サーバーの再起動。

1

すでにgemをgemファイルに入れてバンドルをインストールしても、まだエラーが発生している場合は、サーバーを再起動してください。

2

ここではまだ取り上げられていないものが私のために現れました。私はRuby 2.0.xをインストールした新しいシステムに行った後、このエラーが発生しました。

新しいbcrypt 3.1.7を使用していたとしても、gemfileにbcrypt-ruby 3.0.1があるまで、それは私のためには機能しませんでした。私はその言葉に間違いを犯したばかりのときにそれに抵抗した。

宝石:

bcrypt (3.1.7 ruby x86-mingw32) 
bcrypt-ruby (3.0.1 x86-mingw32, 3.0.0) 

gemfile:

gem 'bcrypt-ruby', '~> 3.0.1' 
gem 'bcrypt', '~> 3.1.7' 

追加する前に、両方の私は、単一のバージョンの組み合わせのすべての種類を試してみました。

+0

これは、bcryptアップデートを正しくインストールし、Rails 3と 'has_secure_password'マクロによる' bcrypt-ruby'リファレンスとの互換性を維持します。 – scarver2

関連する問題