2

我是 Ruby on Rails 的新手,所以我正在关注使用 Rails 4 进行敏捷 Web 开发教程。但是在用户身份验证中,我遇到了一个我无法解决的错误......我已经制作了一个表格因此用户可以登录,为此我在文件 user.rb 中使用 has_secure_password:

class User < ActiveRecord::Base
    has_secure_password
  validates :name, presence: true, uniqueness: true
end

但是当我运行服务器时,我得到了错误:

cannot load such file -- 2.0/bcrypt_ext

这是应用程序跟踪

app/models/user.rb:2:in `<class:User>'
app/models/user.rb:1:in `<top (required)>'
app/controllers/users_controller.rb:7:in `index'
This error occurred while loading the following files:
   bcrypt
   bcrypt_ext
   2.0/bcrypt_ext

我在 gemfile 中包含 gem 'bcrypt-ruby', '~> 3.0.0' 但它仍然不起作用。

我读过类似的问题,它与“捆绑安装”有关,但我无法解决问题。

提前致谢

4

3 回答 3

5

确实,

gem install bcrypt-ruby 

这将使has_secure_password工作。还记得在看到更改后重新启动 rails 服务器。

于 2014-11-02T03:48:05.493 回答
0

我们只能想象您使用的是什么平台,但我假设 *nix 衍生。编辑你Gemfile的还不够 -bundle install命令将为你完成这项工作。您还需要安装本机编译工具链,因为bcrypt_ruby在安装期间构建了一些本机扩展。

于 2013-09-11T20:02:31.280 回答
0

也许你正在使用RVM,如果你应该安装 bcrypt gem global gemset

rvm gemset use global
gem install bcrypt
rvm gemset use whatever_gemset_you_use_previously

(我使用bcrypt而不是bcrypt-ruby因为后者的弃用消息)

于 2014-09-15T13:14:47.060 回答