0

I'm upgrading a Rails stack from 4.2.x to 5.0.1. This stack has no database-backed models. Using rspec as a test framework. The tests run in the 4.2.x environment but not in the 5.0.1 branch.

  1. active_model/railtie is NOT loaded
  2. config.active_record.dump_schema_after_migration is commented out
  3. ActiveRecord::Migration.maintain_test_schema! is commented out
  4. config.use_transactional_fixtures and config.fixture_path are commented out
  5. factory_girl and other fixture/factory tools are not present

Despite all of the above, rspec is attempting to load fixtures and ultimately raising an exception (stack trace below) because ActiveRecord has no connection pool. Any suggestions of things to check to correct this?

Gemfile:

gem 'rack-cors'
gem 'oauth2'

gem 'activemodel-serializers-xml'
gem 'draper', '~> 3.0.0.pre1'
gem 'aws-sdk', '~> 1.61.0'
gem 'newrelic_rpm'
gem 'skylight', '= 1.0.0'
gem 'actionpack-page_caching', '~> 1.1.0'
gem 'redis'
gem 'sneakers'

group :development do
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'meta_request'
  gem 'brakeman'
  gem 'redis-rails-instrumentation'
end

group :development, :test do
  gem 'dotenv-rails'
  gem 'rspec-rails'
  gem 'listen'
end

group :test do
  gem 'selenium-webdriver'
  gem 'capybara'
  gem 'faker'
  gem 'launchy'
  gem 'codeclimate-test-reporter', require: nil
  gem 'mock_redis'
  gem 'simplecov'
end

Backtrace:

ActiveRecord::ConnectionNotEstablished:
        No connection pool with id primary found.
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `retrieve_connection'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/connection_handling.rb:128:in `retrieve_connection'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/connection_handling.rb:91:in `connection'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/fixtures.rb:516:in `create_fixtures'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/fixtures.rb:1015:in `load_fixtures'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/fixtures.rb:988:in `setup_fixtures'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-5.0.1/lib/active_record/fixtures.rb:852:in `before_setup'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-rails-3.5.2/lib/rspec/rails/adapters.rb:126:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:443:in `instance_exec'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:443:in `instance_exec'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:375:in `execute_with'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:606:in `block (2 levels) in run_around_example_hooks_for'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:338:in `call'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:338:in `call'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:607:in `run_around_example_hooks_for'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb:464:in `run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:453:in `with_around_example_hooks'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:496:in `with_around_and_singleton_context_hooks'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example.rb:251:in `run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:627:in `block in run_examples'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:623:in `map'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:623:in `run_examples'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:589:in `run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:590:in `block in run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:590:in `map'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:590:in `run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:113:in `block (3 levels) in run_specs'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:113:in `map'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:113:in `block (2 levels) in run_specs'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1835:in `with_suite_hooks'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:112:in `block in run_specs'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/reporter.rb:77:in `report'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:111:in `run_specs'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:87:in `run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:71:in `run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:45:in `invoke'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rspec-core-3.5.4/exe/rspec:4:in `<top (required)>'
      # /Users/arvanasse/.rbenv/versions/2.2.3/bin/rspec:23:in `load'
      # /Users/arvanasse/.rbenv/versions/2.2.3/bin/rspec:23:in `<top (required)>'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/cli/exec.rb:74:in `load'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/cli/exec.rb:74:in `kernel_load'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/cli/exec.rb:27:in `run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/cli.rb:335:in `exec'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/cli.rb:20:in `dispatch'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/cli.rb:11:in `start'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/exe/bundle:32:in `block in <top (required)>'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/lib/bundler/friendly_errors.rb:121:in `with_friendly_errors'
      # /Users/arvanasse/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.3/exe/bundle:24:in `<top (required)>'
      # /Users/arvanasse/.rbenv/versions/2.2.3/bin/bundle:23:in `load'
      # /Users/arvanasse/.rbenv/versions/2.2.3/bin/bundle:23:in `<main>'
Greg Tarsa
  • 1,622
  • 13
  • 18
AndyV
  • 3,696
  • 1
  • 19
  • 17
  • What is the default value for `config.use_transactional_fixtures`? You may need to explicitly set it to `false`. – Greg Tarsa Feb 08 '17 at 19:07
  • @GregTarsa I believe the default is false (rspec's comment on the setting: "If you're not using ActiveRecord, or you'd prefer not to run each of your examples within a transaction, remove the following line or assign false"). I've tried setting it to false explicitly with no change in results. – AndyV Feb 08 '17 at 20:00
  • It looks like you may have a database requirement sneaking in somewhere. If this worked on Rails 4 I am not sure what to advise. Maybe check out [this SO article](http://stackoverflow.com/questions/821251/how-to-configure-ruby-on-rails-with-no-database) to make sure you have no DB configured. – Greg Tarsa Feb 08 '17 at 20:19
  • Thanks @GregTarsa. I've been through that article and several others. That's why I noted 'the usual suspects' of things that were commented out in the OP. So far I am striking out identifying any source of ARec dependency. – AndyV Feb 08 '17 at 20:50

1 Answers1

0

For future reference: I had added 'activemodel-serializers-xml' to restore some functionality that was extracted in Rails 5.01 but required by the latest production version of draper. That gem has a dependency on ActiveRecord (um, maybe it should be ActiveModel as the name implies?!). Updating to draper 3.0.0.pre1 allowed me to drop 'activemodel-serializers-xml' and the specs are all green. :)

AndyV
  • 3,696
  • 1
  • 19
  • 17