2012-02-19 14 views
12

Khi tôi thêm has_secure_password vào mô hình (được thừa kế từ ActiveRecord :: Base), lỗi nói rằng "bcrypt-ruby không phải là một phần của gói" xảy ra.Lỗi nói rằng "bcrypt-ruby không phải là một phần của gói", làm thế nào tôi có thể thêm bcrypt-ruby vào Gemfile?

Đây nhật ký là:

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

Tôi đã cài đặt bcrypt-ruby bởi

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

nhưng vô ích.

tôi đã cố gắng

$ bundle exec rails server 

nhưng đã không giúp đỡ.

Nếu tôi nhận xét dòng "has_secure_password", lỗi này không xuất hiện.

Làm cách nào để giải quyết vấn đề này?

Trả lời

13

Như thông báo cho bạn biết cần thêm bcrypt-ruby để Gemfile của bạn (ở thư mục gốc của dự án).

Thêm

gem "bcrypt-ruby" 

và sau đó chạy bundle install nên làm các trick (điều này sẽ lấy viên ngọc nếu bạn đã chưa cài đặt nó).

Bạn có thể chỉ định phiên bản cụ thể để, ví dụ:

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

sẽ giúp bạn có được phiên bản mới nhất đó là> = để 3.0.1 nhưng ít hơn 3.1. Bạn có thể làm điều này nếu 3.0.1 có một lỗi sửa chữa bạn phụ thuộc vào và bạn đang hạnh phúc để có được sửa lỗi nhiều hơn nhưng bạn không muốn thay đổi lớn. Có nhiều thông tin hơn trên trang web bundler.

6

Trong Gemfile bạn thêm một dòng

gem 'bcrypt-ruby' 

và sau đó từ dòng lệnh

bundle install 
23

Tôi đã có gem 'bcrypt-ruby', '~> 3.0.0' trong Gemfile và đã chạy lệnh bundle, nhưng tôi vẫn nhận được thông báo đó. Vấn đề là tôi quên khởi động lại máy chủ:

touch tmp/restart.txt 
+2

Tôi đã gặp sự cố tương tự. Khởi động lại máy chủ là thủ thuật cho tôi. – Raj

1

Khởi động lại máy chủ và cài đặt lại gói theo đúng thứ tự, có nghĩa là:

bundle install, bundle update, bundle install 

và sau đó máy chủ khởi động lại.

1

Nếu bạn đã đặt đá quý vào tệp gem và gói đã được cài đặt và bạn vẫn gặp lỗi sau đó khởi động lại máy chủ của mình.

2

Điều gì đó đã đến với tôi chưa được giải quyết ở đây. Tôi nhận được lỗi này sau khi đi đến một hệ thống mới mà tôi đã cài đặt Ruby 2.0.x.

Nó chỉ ra rằng ngay cả khi tôi đang sử dụng bcrypt mới 3.1.7 nó đã không làm việc cho tôi cho đến khi tôi C hadNG đã có bcrypt-ruby 3.0.1 trong gemfile. Tôi đã chống lại điều đó khi tôi nên lấy lỗi ở từ đó.

đá quý:

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' 

Trước khi thêm cả tôi đã cố gắng tất cả các loại kết hợp phiên bản duy nhất.

+0

Cài đặt chính xác bản cập nhật bcrypt và vẫn tương thích với các tham chiếu 'bcrypt-ruby' của Rails 3 và macro' has_secure_password'. – scarver2

Các vấn đề liên quan