1

私は Rails 5.1 を使用した Agile Rails Web Development のチュートリアルに従っている Rails 初心者です。私はレール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') をコンソールに貼り付け、それをフィクスチャで使用することを提案しました。しかし、それでもうまくいきません。Webインターフェイスを介して新しいユーザーを作成でき、サーバーの出力はエラーを示していませんが、コンソールでは次のようになります。

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

2 に答える 2