# RSpec 0.7.0 Released

**URL:** <https://www.ruby-forum.com/t/rspec-0-7-0-released/75006>\
**Category:** Ruby\
**Created:** [November 7, 2006, 11:06am UTC](https://www.ruby-forum.com/t/rspec-0-7-0-released/75006 "2006-11-07T11:06:06Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [November 7, 2006, 11:06am UTC](https://www.ruby-forum.com/t/rspec-0-7-0-released/75006/1 "2006-11-07T11:06:06Z")

</div>

The RSpec Development Team is pleased to announce the release of RSpec  
0.7.0.

You can get it from [http://rubyforge.org/frs/?group\_id=797](http://rubyforge.org/frs/?group_id=797), or “gem  
install rspec”

Note that this release is NOT completely backwards compatible. If you  
are already using a prior release of rspec, see  
[http://rspec.rubyforge.org/upgrade.html](http://rspec.rubyforge.org/upgrade.html) before you upgrade.

RSpec is the original BDD framework for Ruby. This release includes a  
number of significant improvements, most notably in the areas of  
mocks/stubs and the RSpec on Rails plugin. Learn more at:

[http://rspec.rubyforge.org/documentation/mocks/index.html](http://rspec.rubyforge.org/documentation/mocks/index.html)  
[http://rspec.rubyforge.org/documentation/rails/index.html](http://rspec.rubyforge.org/documentation/rails/index.html)

See [http://rspec.rubyforge.org/changes.html](http://rspec.rubyforge.org/changes.html) for a complete list of  
changes.

Thanks to all who contributed to this release, and to who all will  
contribute in the future by using it and providing us with valuable  
feedback.

Happy designing!  
The RSpec Development Team

---

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [November 7, 2006, 11:07am UTC](https://www.ruby-forum.com/t/rspec-0-7-0-released/75006/2 "2006-11-07T11:07:56Z")

</div>

David C. wrote:

> number of significant improvements, most notably in the areas of  
> mocks/stubs and the RSpec on Rails plugin. Learn more at:
> 
> [http://rspec.rubyforge.org/documentation/mocks/index.html](http://rspec.rubyforge.org/documentation/mocks/index.html)  
> [http://rspec.rubyforge.org/documentation/rails/index.html](http://rspec.rubyforge.org/documentation/rails/index.html)
> 
> See [http://rspec.rubyforge.org/changes.html](http://rspec.rubyforge.org/changes.html) for a complete list of changes.
> 
> Thanks to all who contributed to this release, and to who all will  
> contribute in the future by using it and providing us with valuable  
> feedback.

RSpec is really looking great. I’m curious though, why offer:

actual.should == #passes if actual ==

Yet not extrapolate this techniquw to other methods? I’ve played with  
this approach myself and it would seem to greatly simplify the  
underlying code and be most intuitive. Just to be clear, instead of

actual.should\_equal #passes if actual.equal?   
actual.should\_not\_equal #passes if !actual.equal?

actual.should\_eql #passes if actual.eql?   
actual.should\_not\_eql #passes if !actual.eql?

use

actual.should.equal? #passes if actual.equal?   
actual.should\_not.equal? #passes if !actual.equal?

actual.should.eql? #passes if actual.eql?   
actual.should\_not.eql? #passes if !actual.eql?

This can be extended to other methods as well. For example:

actual.should.raise

My 2c.

Thanks,  
T.

---

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [November 7, 2006, 11:08am UTC](https://www.ruby-forum.com/t/rspec-0-7-0-released/75006/3 "2006-11-07T11:08:02Z")

</div>

On 11/6/06, Trans [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > contribute in the future by using it and providing us with valuable  
> > actual.should\_equal #passes if actual.equal?   
> > actual.should.eql? #passes if actual.eql?   
> > actual.should\_not.eql? #passes if !actual.eql?
> 
> This can be extended to other methods as well. For example:
> 
> actual.should.raise

This already works, actually. 🙂

---

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [November 7, 2006, 11:08am UTC](https://www.ruby-forum.com/t/rspec-0-7-0-released/75006/4 "2006-11-07T11:08:04Z")

</div>

On 11/6/06, Wilson B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > [http://rspec.rubyforge.org/upgrade.html](http://rspec.rubyforge.org/upgrade.html) before you upgrade.  
> > > Thanks to all who contributed to this release, and to who all will
> > 
> > actual.should.eql? #passes if actual.eql?   
> > actual.should\_not.eql? #passes if !actual.eql?
> > 
> > This can be extended to other methods as well. For example:
> > 
> > actual.should.raise
> 
> This already works, actually. 🙂

It does, but that’s because of the current underlying implementation.  
It is undocumented and officially unsupported, so use it at your own  
risk.

That said, I honestly don’t see it ever changing.

Cheers,  
David

---

<div class="post-metadata">

**Author:** ![crucoba](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e8c25b/32.png) [@crucoba](https://www.ruby-forum.com/u/crucoba)\
**Post date:** [November 7, 2006, 11:08am UTC](https://www.ruby-forum.com/t/rspec-0-7-0-released/75006/5 "2006-11-07T11:08:05Z")

</div>

On 11/6/06, Trans [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > contribute in the future by using it and providing us with valuable  
> > actual.should\_equal #passes if actual.equal?   
> > actual.should.eql? #passes if actual.eql?   
> > actual.should\_not.eql? #passes if !actual.eql?
> 
> This can be extended to other methods as well. For example:
> 
> actual.should.raise
> 
> My 2c.

That’s hilarious! You’ve missed a lot of history. No offense. We went  
through a lot of song and dance about this, that’s all.

Originally, all of the methods were should\_equal, should\_match, etc.  
Then I came up w/ this dumb idea to add should\_be\_anything and have it  
call .anything? under the hood. Everybody loved the idea, but HATED  
the dots!!!

Then Rich Kilmer introduced the underscore sugar that lets you say  
“should\_do\_stuff” but under the hood it called “should.do.stuff”.

Ah, but then it still wasn’t over! We started running into collision  
after collision on methods that called in the middle of that stack.  
And so on and so on and so on.

At this point it’s pretty stable. Under the hood, it really does use  
something that pans out to object.should.equal value. So  
actual.should\_not.equal expected will probably work - but I doubt  
we’ll be supporting that officially.

Cheers,  
David
