对downvoting的评论:这个问题被错误地标记为重复。从我附上的gemfile可以清楚地看到我使用的是更新版本的bcrypt。这个和其他的差异(我使用Ubuntu 12.04,而另一个线程提到Windows)使得其他线程的解决方案不适用于我的情况。我仍然有这个问题,欢迎任何建议。
=评论结束
我正在研究着名的Rails教程,但却陷入Listing 7.5 - 我认为我遵循了所有说明,但没有得到我得到了。实际的错误堆栈是:
app/models/user.rb:6:in `<class:User>'
app/models/user.rb:1:in `<top (required)>'
app/controllers/users_controller.rb:4:in `show'
This error occurred while loading the following files:
bcrypt
Request
Parameters:
{"id"=>"1"}
这是我的Gemfile:
source 'https://rubygems.org'
ruby '2.1.1'
#ruby-gemset=railstutorial_rails_4_0
gem 'rails', '4.0.4'
gem 'bootstrap-sass', '2.3.2.0'
gem 'sprockets', '2.11.0'
gem 'bcrypt-ruby', '3.1.2'
group :development, :test do
gem 'sqlite3', '1.3.8'
gem 'rspec-rails', '2.13.1'
gem 'guard-rspec', '2.5.0'
gem 'spork-rails', '4.0.0'
gem 'guard-spork', '1.5.0'
gem 'childprocess', '0.3.6'
end
group :test do
gem 'selenium-webdriver', '2.35.1'
gem 'capybara', '2.1.0'
end
gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'
group :doc do
gem 'sdoc', '0.3.20', require: false
end
这是User.rb:
class User < ActiveRecord::Base
before_save {self.email = email.downcase}
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
has_secure_password
validates :password, length: { minimum: 6 }
end
这是routes.rb:
SampleApp::Application.routes.draw do
resources :users # replaces: get "users/new"
root 'static_pages#home'
match '/signup', to: 'users#new', via: 'get'
match '/help', to: 'static_pages#help', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
end
这是user_controller.rb:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
def new
end
end
你能说出问题出在哪里吗?
答案 0 :(得分:9)
Curiuosly,重新启动WEBrick服务器消除了这个问题。这是在系统重新启动之后系统部分升级(Ubuntu 12.04)作为对不相关问题(the Heartbleed bug)的响应之后完成的,所以我不知道是否只是WEBrick重启这消除了这个问题。
答案 1 :(得分:4)
正是WEBrick重启修复了你的问题。 rails控制台输出将显示错误:
You don't have bcrypt installed in your application. Please add it to your Gemfile and run bundle install
Completed 500 Internal Server Error in 10ms
LoadError (cannot load such file -- bcrypt):
这是因为在为“A Hashed Password”安装bcrypt gem之后(本教程中的第6.3.1节),没有明确的指令来重新启动服务器。