错误声明“bcrypt-ruby不是捆绑包的一部分”,如何将bcrypt-ruby添加到Gemfile?
当我将has_secure_password添加到模型(inheritance自ActiveRecord :: Base)时,会出现错误,指出“bcrypt-ruby不是bundle的一部分”。
这里的日志是:
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 `' app/models/user.rb:1:in `' app/controllers/users_controller.rb:1:in `'
我安装了bcrypt-ruby
$ 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...
但无济于事。
我试过了
$ bundle exec rails server
但没有帮助。
如果我注释掉“has_secure_password”行,则不会出现此错误。
我怎么解决这个问题?
正如消息所示,您需要将bcrypt-ruby添加到您的Gemfile中(在项目的根目录下)。
添加
gem "bcrypt-ruby"
然后运行bundle install
就可以了(如果你还没有安装它,这将获取gem)。
您可以指定特定版本,例如
gem "bcrypt-ruby", "~> 3.0.1"
将为您提供最新版本> =至3.0.1但小于3.1。 你可能会这样做,如果3.0.1有一个你依赖的错误修复,你很高兴得到更多的错误修复,但你不想要重大改变。 在bundler网站上加载了更多信息。
我已经在Gemfile中使用了gem 'bcrypt-ruby', '~> 3.0.0'
,并且已经运行了命令bundle
,但我仍然收到了该消息。 问题是我忘了重启服务器:
touch tmp/restart.txt
在你的Gemfile中添加一行
gem 'bcrypt-ruby'
然后从命令行
bundle install
我想到的东西还没有在这里解决。 在进入安装了Ruby 2.0.x的新系统后,我收到了这个错误。
事实certificate,即使我使用新的bcrypt 3.1.7它也不适合我,直到我在gemfile中有bcrypt-ruby 3.0.1。 当我应该把错误发现时,我拒绝了。
gem:
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'
在添加两者之前,我尝试了各种单一版本组合。
重新启动服务器并以正确的顺序重新安装捆绑包,即:
bundle install, bundle update, bundle install
然后服务器重启。
如果您已将gem放入gem文件并安装了bundle,但仍然出现错误,请重新启动服务器。