2012-02-19 8 views
12

Quando aggiungo has_secure_password al modello (ereditato da ActiveRecord :: Base), si verifica un errore che indica che "bcrypt-ruby non fa parte del pacchetto".Errore nel dichiarare che "bcrypt-ruby non fa parte del pacchetto", come posso aggiungere bcrypt-ruby a Gemfile?

Qui il log è:

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)>' 

ho installato bcrypt-ruby da

$ 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... 

ma era inutilmente.

ho cercato

$ bundle exec rails server 

ma era nessun aiuto.

Se commento la riga "has_secure_password", questo errore non viene visualizzato.

Come posso risolvere questo problema?

risposta

13

Come dice il messaggio è necessario aggiungere bcrypt rubino al Gemfile (alla radice del progetto).

Aggiunta

gem "bcrypt-ruby" 

e quindi eseguire bundle install dovrebbe fare il trucco (questo sarebbe recuperare il gioiello se non l'aveste già installato).

È possibile specificare le versioni specifiche per, ad esempio,

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

gli otterrà l'ultima versione che è> = a 3.0.1, ma meno di 3.1. Puoi farlo se 3.0.1 ha una correzione di bug da cui dipendi e sei contento di ottenere più correzioni di bug ma non vuoi modifiche importanti. Ci sono molte più informazioni sul sito web bundler.

6

Nella tua Gemfile aggiungere una linea di

gem 'bcrypt-ruby' 

e quindi dalla riga di comando

bundle install 
23

Avevo già gem 'bcrypt-ruby', '~> 3.0.0' in Gemfile e avevo già eseguito il comando bundle, eppure ho ancora ricevuto quel messaggio. Il problema era che ho dimenticato di riavviare il server:

touch tmp/restart.txt 
+2

Ho avuto esattamente lo stesso problema. Riavviare il server è stato il trucco per me. – Raj

1

Riavviare il server e reinstallare fascio nell'ordine corretto, vale a dire:

bundle install, bundle update, bundle install 

e quindi riavviare il server.

1

Se la gem è già presente nel file gem e nel bundle installato e si verifica ancora un errore, quindi riavviare il server.

2

Qualcosa che è venuto fuori per me che non è ancora stato risolto qui. Ho ricevuto questo errore dopo aver installato un nuovo sistema su cui ho installato Ruby 2.0.x.

Si scopre che anche se stavo usando il nuovo bcrypt 3.1.7 non ha funzionato per me finché non ho anche bcrypt-ruby 3.0.1 nel gemfile. Ho resistito a questo quando avrei dovuto prendere l'errore nella sua parola.

gemme:

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' 

Prima di aggiungere sia ho provato tutti i tipi di singole combinazioni di versioni.

+0

Installa correttamente l'aggiornamento bcrypt e rimane compatibile con i riferimenti 'bcrypt-ruby' di Rails 3 e la macro' has_secure_password'. – scarver2

Problemi correlati