Search code examples
ruby-on-rails-4rspecrspec-rails

uninitialized constant ActionView::Template::Handlers::ERB::ENCODING_FLAG


I'm currently working on a Rails application version Rails 4.2.6 and ruby 2.2.2. I'm trying to run rspec tests, I have versions

 rspec-core 3.7.1
  - rspec-expectations 3.7.0
  - rspec-mocks 3.7.0
  - rspec-rails 3.7.2
  - rspec-support 3.7.1

When I run the following command bundle exec rspec spec/models/user_spec.rb I get the following error: An error occurred while loading ./spec/models/user_spec.rb.

Failure/Error: require "rspec/rails"

NameError: uninitialized constant ActionView::Template::Handlers::ERB::ENCODING_FLAG

Here is my rails_helper.rb

# This file is copied to spec/ when you run 'rails generate rspec:install'
require 'spec_helper'
require "rspec/rails"
require "capybara/rspec"

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
# Prevent database truncation if the environment is production
abort("The Rails environment is running in production mode!") if Rails.env.production?

ActiveRecord::Migration.maintain_test_schema!

Capybara.register_driver :selenium_chrome do |app|
 Capybara::Selenium::Driver.new(app, browser: :chrome)
end

Capybara.javascript_driver = :selenium_chrome

RSpec.configure do |config|
  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"

  config.use_transactional_fixtures = false

  config.infer_spec_type_from_file_location!

  # Filter lines from Rails gems in backtraces.
  config.filter_rails_from_backtrace!

  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do
    DatabaseCleaner.strategy = :transaction
  end

  config.before(:each, js: true) do
    DatabaseCleaner.strategy = :truncation
  end

  # This block must be here, do not combine with the other `before(:each)` block.
  # This makes it so Capybara can see the database.
  config.before(:each) do
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end
end

Here is the Gemfile:

group :development, :test do
  gem 'rspec'
  gem 'rspec-rails'
  gem 'byebug'
  gem 'pry'
  gem 'pry-nav'
  gem 'pry-stack_explorer'
end

group :test do
  gem "capybara"
  gem "selenium-webdriver"
end

Solution

  • What happens if you move:

    ...
    ENV['RAILS_ENV'] ||= 'test'
    require File.expand_path('../../config/environment', __FILE__)
    ...
    

    to the beginning of the file?