RSpec Rails 4.0 has been released!

Benoit Tigeot, Jon Rowe and Phil Pirozhkov

May 27, 2020

RSpec Rails 4.0 has been released! Given our commitment to semantic versioning, this is a major release and as such contains breaking changes. The major change is that we’ve dropped support for Rails below 5, with only soft support for Rails 4.2.

As usual, if you notice any newly introduced bugs, please let us know, and we’ll release a fix for it ASAP.

RSpec continues to be a community-driven project with contributors from all over the world. This release includes 258 commits and 56 merged pull requests from 27 different contributors!

Thank you to everyone who helped make this release happen!

Notable Changes

Support for Rails 6, including support for testing ActionCable, ActiveMailbox.

Breaking changes

RSpec Rails 4 only supports Rails 5 and 6. This is in line with our new versioning policy which keeps major versions of RSpec Rails in lockstep with supported versions of Rails.

This means that we no longer support versions of Ruby below 2.2 in line with the versions of Ruby supported by Rails 5.

We have restricted the version of Rails for this version to 4.2 to allows a “soft support” for Rails 4.2 during this interim period but we strongly urge you to upgrade Rails to use 4.0.0.

Removed version lock with RSpec gems

The rspec-rails gem is no longer locked with the versioning of the other RSpec gems, we will now be releasing rspec-rails with each new Rails release, keeping in lockstep with their supported major versions.

Improved JRuby support

We have improved JRuby support and RSpec Rails 4 fully supports JRuby on Rails 5 and 6.

Support for Action Cable

We now support channel specs in order to easily test your Action Cable channels. A channel spec pulls in ActionCable::Channel::TestCase, including all of the behavior and assertions that it provides, in addition to RSpec’s own behavior and expectations.

Support for Action Mailbox

Rails 6 adds Action Mailbox for dealing with inbound emails. RSpec Rails 4 adds support for mailbox specs using the Rails test helpers for mailboxes.

For example using the Rails test helper, process and the have_been_delivered matcher:

RSpec.describe InboxMailbox, type: :mailbox do
  it "marks email as delivered when number tag in subject is valid" do
    mail = Mail.new(
      from: "replies@example.com",
      subject: "[141982763] support ticket"
    )
    mail_processed = process(mail)

    expect(mail_processed).to have_been_delivered
  end
end

Improvements to generators

If you use generators, there are some improvements: - The default hash syntax is now the Ruby 1.9 style in generated files to match Rails conventions - Request specs are generated instead of controller specs by default - New generators available (channel, generator, mailbox…)

Allow configuring Active Job queue_adapter in system specs

Some people want to run Active Job with a specific queue adapter. In system specs you can now choose your desired queue adapter:

before do
  ActiveJob::Base.queue_adapter = :inline
end

Silence log output with Puma

By default, Puma will no longer print logs when running system specs.

Ability to manually turn off Active Record support

When using Rails without ActiveRecord or using an alternative ORM or a database of choice, e.g. Sequel, ROM, Mongoid etc. We can mistakenly detect ActiveRecord as being used due to other gems autoloading the constants, we now support manually turning off Active Record support when not configured with: config.use_active_record = false

Stats:

Docs

API Docs

Cucumber Features

Release Notes

4.0.1 / 2020-05-16

Full Changelog

Bug Fixes:

4.0.0 / 2020-03-24

Full Changelog

Enhancements:

Bug Fixes:

Breaking Changes: