# Random "NameError: uninitialized constant" only on CircleCI

**URL:** <https://discuss.circleci.com/t/random-nameerror-uninitialized-constant-only-on-circleci/38849>\
**Category:** Running Tests\
**Tags:** 2.0, circle-yml\
**Created:** [January 21, 2021, 7:08am UTC](https://discuss.circleci.com/t/random-nameerror-uninitialized-constant-only-on-circleci/38849 "2021-01-21T07:08:21Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![goofansu](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/goofansu/32/21261_2.png) [@goofansu](https://discuss.circleci.com/u/goofansu)\
**Post date:** [January 21, 2021, 7:08am UTC](https://discuss.circleci.com/t/random-nameerror-uninitialized-constant-only-on-circleci/38849/1 "2021-01-21T07:08:22Z")

</div>

Hi, I’m upgrading Rails 5.2 to Rails 6.0 and run unit tests on CircleCI, everything works OK except the following errors. There are no such errors when running on my laptop, so I consider whether it is a problem in CircleCI. Is there any suggestion on how to debug the problem? Thanks

The error:

```auto
Failure/Error: candidate = constant.const_get(name)

NameError:
  uninitialized constant #<Class:0x0000563e8e94c758>::Students
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.4/lib/active_support/inflector/methods.rb:284:in `const_get'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.4/lib/active_support/inflector/methods.rb:284:in `block in constantize'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.4/lib/active_support/inflector/methods.rb:280:in `each'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.4/lib/active_support/inflector/methods.rb:280:in `inject'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.4/lib/active_support/inflector/methods.rb:280:in `constantize'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:622:in `get'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:653:in `constantize'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3.4/lib/action_dispatch/http/request.rb:89:in `controller_class_for'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3.4/lib/action_dispatch/http/parameters.rb:100:in `binary_params_for?'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3.4/lib/action_dispatch/http/parameters.rb:91:in `set_binary_encoding'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3.4/lib/action_dispatch/http/parameters.rb:69:in `path_parameters='
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-rails-4.0.1/lib/rspec/rails/example/view_example_group.rb:198:in `block (2 levels) in <module:ViewExampleGroup>'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:455:in `instance_exec'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:455:in `instance_exec'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:365:in `run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:529:in `block in run_owned_hooks_for'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:528:in `each'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:528:in `run_owned_hooks_for'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:615:in `block in run_example_hooks_for'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:614:in `reverse_each'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:614:in `run_example_hooks_for'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:484:in `run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:502:in `run_before_example'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:261:in `block in run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:508:in `block in with_around_and_singleton_context_hooks'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:465:in `block in with_around_example_hooks'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:486:in `block in run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:626:in `block in run_around_example_hooks_for'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:350:in `call'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-rails-4.0.1/lib/rspec/rails/adapters.rb:75:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:455:in `instance_exec'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:455:in `instance_exec'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:390:in `execute_with'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:350:in `call'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:629:in `run_around_example_hooks_for'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/hooks.rb:486:in `run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:465:in `with_around_example_hooks'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:508:in `with_around_and_singleton_context_hooks'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example.rb:259:in `run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example_group.rb:644:in `block in run_examples'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example_group.rb:640:in `map'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example_group.rb:640:in `run_examples'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example_group.rb:606:in `run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example_group.rb:607:in `block in run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example_group.rb:607:in `map'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/example_group.rb:607:in `run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:121:in `block (3 levels) in run_specs'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:121:in `map'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:121:in `block (2 levels) in run_specs'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/configuration.rb:2067:in `with_suite_hooks'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:116:in `block in run_specs'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/reporter.rb:74:in `report'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:115:in `run_specs'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:89:in `run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:71:in `run'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/lib/rspec/core/runner.rb:45:in `invoke'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.10.1/exe/rspec:4:in `<top (required)>'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/bin/rspec:23:in `load'
/root/eduvo/openapply/vendor/bundle/ruby/2.6.0/bin/rspec:23:in `<top (required)>'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `load'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `kernel_load'
/usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:463:in `exec'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:27:in `dispatch'
/usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/usr/local/lib/ruby/2.6.0/bundler/cli.rb:18:in `start'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:30:in `block in <top (required)>'
/usr/local/lib/ruby/2.6.0/bundler/friendly_errors.rb:124:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:22:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

  Showing full backtrace because every line was filtered out.
  See docs for RSpec::Configuration#backtrace_exclusion_patterns and
  RSpec::Configuration#backtrace_inclusion_patterns for more information.

```

The config

```auto
version: 2.1
jobs:
  unit_test:
    working_directory: ~/eduvo/openapply
    parallelism: 8
    shell: /bin/bash --login
    environment:
      CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
      EAGER_LOAD: true
      RAILS_ENV: test
      RACK_ENV: test
      COVERAGE: true

    docker:
    - image: johnnylaitw/circle-ci-ruby-2.6.5-prince:latest
      auth:
          username: $DOCKER_USERNAME
          password: $DOCKER_PASSWORD
    - image: circleci/mysql:5.7.27-ram
    - image: circleci/redis

    steps:
    - restore_cache:
        keys:
            - source-v3-{{ .Branch }}-{{ .Revision }}

    - checkout

    - save_cache:
        key: source-v3-{{ .Branch }}-{{ .Revision }}
        paths:
            - ".git"

    - run: mkdir -p $CIRCLE_ARTIFACTS

    # This is based on your 1.0 configuration file or project settings
    - run: bundle config --local without production:staging:sandbox

    - restore_cache:
        keys:
            - gem-cache-v3-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
            - gem-cache-v3-{{ arch }}-{{ .Branch }}
            - gem-cache-v3

    - run:
        name: Gem Bundling
        command: 'bundle check --path=vendor/bundle || bundle install --path=vendor/bundle
        --jobs=4 --retry=3'

    - save_cache:
        key: gem-cache-v3-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
        paths:
            - vendor/bundle

    - run: mv config/database.yml.example config/database.yml
    - run: mv config/pspdfkit_jwt.pem.example config/pspdfkit_jwt.pem
    - run: bundle exec rake db:create db:schema:load db:schema:cache:dump

    - restore_cache:
        keys:
        - asset-cache-v3-{{ arch }}-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
        - asset-cache-v3-{{ arch }}-{{ .Branch }}
        - asset-cache-v3-{{ arch }}
        - asset-cache-v3

    - save_cache:
        key: asset-cache-v3-{{ arch }}-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
        paths:
        - public/assets
        - tmp/cache/assets/sprockets
        - tmp/archives

    - run:
        shell: /bin/bash
        name: Check Config Spec
        command: bundle exec rspec spec/configs/config_spec.rb

    - run:
        shell: /bin/bash -O globstar
        name: Running RSpec
        command: bundle exec rspec
            -p
            --require support/rspec_exclude_features_pattern
            --order rand
            --color
            --format progress
            --format RspecJunitFormatter
            --out /tmp/test-results/rspec/results.xml
            $(circleci tests glob spec/{models,controllers,api,abilitites,carriers,decorators,extras,helpers,lib,mailers,presenters,requests,routing,serializers,services,support,uploaders,validators,views,workers}/**/*_spec.rb | circleci tests split --split-by=timings)

    - store_test_results:
        path: /tmp/test-results

    - store_artifacts:
        path: /tmp/circleci-artifacts

    - run:
        name: Stash coverage results
        command: |
            mkdir coverage_results
            cp -R coverage/.resultset.json coverage_results/.resultset-${CIRCLE_NODE_INDEX}-unit.json

    - persist_to_workspace:
        root: .
        paths:
            - coverage_results

```

FYI, the auto loading is set by `config.autoloader = :classic` for compatibility with old code structure.

---

<div class="post-metadata">

**Author:** ![mike](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/mike/32/24230_2.png) [@mike](https://discuss.circleci.com/u/mike)\
**Post date:** [January 26, 2021, 1:17am UTC](https://discuss.circleci.com/t/random-nameerror-uninitialized-constant-only-on-circleci/38849/2 "2021-01-26T01:17:55Z")

</div>

If you have not already, I would definitely check to make sure to increment your cache. Especially due to the fact that this is working locally.

For example, `gem-cache-v3` would still pull the dependencies from Rails 5.2 unless you have already incremented it from `gem-cache-v2` after updating to Rails 6.0. Potentially try changing that the `gem-cache-v4`?

---

<div class="post-metadata">

**Author:** ![goofansu](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/goofansu/32/21261_2.png) [@goofansu](https://discuss.circleci.com/u/goofansu)\
**Post date:** [January 26, 2021, 1:50am UTC](https://discuss.circleci.com/t/random-nameerror-uninitialized-constant-only-on-circleci/38849/3 "2021-01-26T01:50:42Z")

</div>

Thank you, trying now.

---

<div class="post-metadata">

**Author:** ![goofansu](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/goofansu/32/21261_2.png) [@goofansu](https://discuss.circleci.com/u/goofansu)\
**Post date:** [January 26, 2021, 2:22am UTC](https://discuss.circleci.com/t/random-nameerror-uninitialized-constant-only-on-circleci/38849/4 "2021-01-26T02:22:20Z")

</div>

It is the same result, I’ll reply when the problem resolved.

— update —

After setting `config.autoloader = :zeitwerk`, the problem also occurs at my laptop.

---

<div class="post-metadata">

**Author:** ![goofansu](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/goofansu/32/21261_2.png) [@goofansu](https://discuss.circleci.com/u/goofansu)\
**Post date:** [February 23, 2021, 3:05am UTC](https://discuss.circleci.com/t/random-nameerror-uninitialized-constant-only-on-circleci/38849/5 "2021-02-23T03:05:04Z")

</div>

The error is caused in some view specs, like the follows:

```
RSpec.describe 'controller/partial'
  ...
end

```

RSpec infers controller by the `describe` param when `/` is found, then searches it in code paths, throws “NameError: uninitialized constant” if it is not found. There is no problem before Rails 6.0.

Updated to following resolves the problem:

```
RSpec.describe 'rendering a partial' do
  ...
end
```

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/circleci/original/3X/5/1/511608acda8e85906e15909b57bd0a46c1dbe291.png) [@system](https://discuss.circleci.com/u/system)\
**Post date:** [March 5, 2021, 3:05am UTC](https://discuss.circleci.com/t/random-nameerror-uninitialized-constant-only-on-circleci/38849/6 "2021-03-05T03:05:41Z")

</div>

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.
