Ошибка тестов Rails - PullRequest
0 голосов
/ 30 мая 2018

Я новичок в rails, следующий из учебника Agile Rails Web Development с rails 5.1.Я использую рельсы 5.2

Я создал пользователей с:

rails g scaffold User name:string password:digest
rails db:migrate


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

Все тесты пользователей не пройдены с:

NameError: uninitialized constant ActiveRecord::FixtureSet::RenderContext::BCrypt
test/fixtures/users.yml:5:in `get_binding'

Это файл фикстур:

# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

one:
  name: dave
  password_digest: <%= BCrypt::Password.create('secret') %>

two:
  name: susannah
  password_digest: <%= BCrypt::Password.create('secret') %>

Ссылка на github: https://github.com/marko-avlijas/depot

Я понятия не имею, как отладить это, и поиск ошибки не даст мне ничего.

Если я вставлю require 'bcrypt' вtest_helper Я получаю:

`require ': не могу загрузить такой файл - bcrypt (LoadError)

bo-oz предлагает вставить BCrypt :: Password.create (' secret ') в консольи использовать это в светильниках.Но даже это не работает.Через веб-интерфейс я могу создать нового пользователя, и вывод сервера указывает на отсутствие ошибок, но в консоли я получаю это:

>> BCrypt::Password.create('secret')
NameError: uninitialized constant BCrypt
        from (irb):1
>> require 'bcrypt'
LoadError: cannot load such file -- bcrypt
        from (irb):2

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Я только что посмотрел на ваш репо.Все ваши файлы фикстуры имеют расширение .yml/fixtures/users.yml у вас есть встроенный рубин, поэтому, возможно, измените имя файла на fixtures/users.yml.erb.

Также мой комментарий выше совершенно неправильный, он должен быть password_digest: <%= BCrypt::Password.create('secret', cost: 4) %>.Используйте это только для тестирования, так как ограничение растяжений числом менее 10 значительно повысит производительность вашего набора тестов.

После загрузки проекта и запуска rails console

BCrypt::Password.create('testpassword', cost: 5)
=> "$2a$05$6PI2dUgqbb2LDSxEq2G.reINN9vyVRarFl7NAySQMdArJqqYy0/D."

Если вы все еще испытываете ту же проблему, подумайте о том, чтобы добавить драгоценный камень в ваш test_helper.rb и выясните, загружаете ли вы его или нет.

0 голосов
/ 30 мая 2018

Похоже, Bcrypt гем не установлен.Хотя это не комментируется под Gemfile.Попробуйте запустить bundle install еще раз, а затем запустите тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...