Rails: эта ошибка произошла при загрузке следующих файлов: bcrypt

Комментарий к отрицательному голосованию: этот вопрос ошибочно помечен как дубликат. Из приложенного файла gem ясно, что я использую более новую версию bcrypt. Это и другие отличия (я использую Ubuntu 12.04, тогда как в другом потоке упоминается Windows) делают решение этого другого потока неприменимым к моему случаю. У меня все еще есть проблема, и я буду рад любым советам.

= конец комментария

Я работаю над знаменитым руководством по Rails, но застрял на листинге 7.5 - Я думаю, что выполнил все инструкции, но вместо UserPage1я получаю bcryptError. Фактический стек ошибок:

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

Вот route.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

Можете ли вы сказать, где проблема?


person Nick    schedule 09.04.2014    source источник


Ответы (2)


Любопытно, что перезапуск сервера WEBrick устранил проблему. Это было сделано после перезагрузки системы, которой предшествовало частичное обновление системы (Ubuntu 12.04) в ответ на несвязанную проблему (ошибка Heartbleed), поэтому я действительно не знаю, был ли это просто перезапуск WEBrick, который устранил проблему.

person Nick    schedule 12.04.2014

Это был перезапуск 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):

Это было вызвано тем, что после установки гема bcrypt для «Хешированного пароля» (раздел 6.3.1 в руководстве) нет явных инструкций по перезапуску сервера.

person pacmanoz    schedule 04.06.2014