# NameError: uninitialized constant Dry::Validation::Contract::ClassInterface when using binding.pry inside spec examples

**URL:** <https://discourse.dry-rb.org/t/nameerror-uninitialized-constant-dry-classinterface-when-using-binding-pry-inside-spec-examples/1646>\
**Category:** Uncategorized\
**Created:** [April 5, 2023, 9:39am UTC](https://discourse.dry-rb.org/t/nameerror-uninitialized-constant-dry-classinterface-when-using-binding-pry-inside-spec-examples/1646 "2023-04-05T09:39:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![barmic](https://avatars.discourse-cdn.com/v4/letter/b/f05b48/32.png) [@barmic](https://discourse.dry-rb.org/u/barmic)\
**Post date:** [April 5, 2023, 9:39am UTC](https://discourse.dry-rb.org/t/nameerror-uninitialized-constant-dry-classinterface-when-using-binding-pry-inside-spec-examples/1646/1 "2023-04-05T09:39:51Z")

</div>

Hello,  
in the project I use `dry-validation` gem.

When I use `binding.pry` inside rspec examples and call the subject:

```auto
subject(:update_store) { described_class.new(partner.user, params).call }

....

it "creates 2 opening hours" do
  binding.pry
  expect { update_store }.to change { OpeningHour.count }.from(0).to(2)
end

```

I get this error:

```auto
[1] pry(#<RSpec::ExampleGroups::StoresUseCasesUpdate::WhenEverythingIsFineAndWell::WhenOpeningHoursAreUpdated::WhenOpeningHoursAreNotYetCreated>)> update_store
NameError: uninitialized constant Dry::Validation::Contract::ClassInterface
from /usr/local/bundle/gems/dry-validation-1.10.0/lib/dry/validation/contract.rb:47:in `<class:Contract>'

```

I’m pretty sure it used to work. Has anyone had a similar problem?

---

<div class="post-metadata">

**Author:** ![alassek](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/alassek/32/314_2.png) [@alassek](https://discourse.dry-rb.org/u/alassek)\
**Post date:** [April 5, 2023, 5:56pm UTC](https://discourse.dry-rb.org/t/nameerror-uninitialized-constant-dry-classinterface-when-using-binding-pry-inside-spec-examples/1646/2 "2023-04-05T17:56:02Z")

</div>

Have you recently updated the gem from `< 1.9.0`? If you look at [the Changelog](https://github.com/dry-rb/dry-validation/blob/main/CHANGELOG.md#190-2022-10-15) note that it recently switched to using zeitwerk for loading.

This means that if you are doing e.g. `require "dry/validation/contract"` you should remove that and only do `require "dry/validation"`, as that will set up the zeitwerk gem loader for all other constants.

---

<div class="post-metadata">

**Author:** ![testa19](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.dry-rb.org/testa19/32/990_2.png) [@testa19](https://discourse.dry-rb.org/u/testa19)\
**Post date:** [October 7, 2024, 12:57pm UTC](https://discourse.dry-rb.org/t/nameerror-uninitialized-constant-dry-classinterface-when-using-binding-pry-inside-spec-examples/1646/3 "2024-10-07T12:57:40Z")

</div>

Have the same issue: running a test and using binding.pry in a controller. Everything fine if i let the test run its course or run rails console.

I have tried to require some parts in `rails_helper.rb` and it solves `ClassInterface`, but there are other modules that fail down the line  
For example, third in line is `NameError: uninitialized constant Dry::Schema::Messages::Abstract` - it fails in case requiring message\_compiler

```auto
require 'dry/validation/contract'
require 'dry/schema/message_compiler'

```
