R Spec

Build Status Code Climate Gem Version Inline docs Documentation

A small Rspec clone based on Fix specing framework.

:warning: Important:

To avoid confusion in the community, please note that the gem of this project is not rspec, it is r_spec (meaning Ruby Spec).

This project is totally independent of rspec.info.

Also, while both gems define an RSpec module, r_spec (which follows the gem naming convention) is still quite different than rspec due to its Ruby Fix dependency.



Terminal sessions

A comparison between the behavior of a small fix-based script (which became the r_spec gem) and rspec.

As a result, with r_spec the build is passing, while with rspec it is failing. Despite two separate contexts, rspec was not able to evaluate some code in isolation to prevent side effects.

What did you RSpec?

Unbelievable but true, sometimes "💩" is equal to 42.

Although fun, this feature can be fixed pretty easily...

Fix RSpec!


Add this line to your application's Gemfile:

gem 'r_spec'

And then execute:

$ bundle

Or install it yourself as:

$ gem install r_spec


Given this greeting_spec.rb spec:

require 'r_spec'

greeting = 'Hello, world!'

RSpec.describe 'Test' do
  context 'Alice' do
    before { greeting.gsub!('world', 'Alice') }
    it { expect(greeting).to eql 'Hello, Alice!' }

  context 'Bob' do
    before { greeting.gsub!('world', 'Bob') }
    it { expect(greeting).to eql 'Hello, Bob!' }

It can be tested in the console with the command:

$ ruby greeting_spec.rb

Ran 2 tests in 0.010994 seconds
100% compliant - 0 infos, 0 failures, 0 errors


As a basic form of security R Spec provides a set of SHA512 checksums for every Gem release. These checksums can be found in the checksum/ directory. Although these checksums do not prevent malicious users from tampering with a built Gem they can be used for basic integrity verification purposes.

The checksum of a file can be checked using the sha512sum command. For example:

$ sha512sum pkg/r_spec-0.1.0.gem
e9e35e1953104e2d428b0f217e418db3c1baecd9e011b2545f9fcba4ff7e3bba674c6b928b3d8db842a139cd7cc9806d77ebdc7f710ece4f2aecb343703e2451  pkg/r_spec-0.1.0.gem


R Spec follows Semantic Versioning 2.0.


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request


See LICENSE.md file.