[rspec-users] Evaluating shared example customisation block before shared block

David Chelimsky dchelimsky at gmail.com
Wed Aug 4 07:44:51 EDT 2010

On Aug 4, 2010, at 1:55 AM, Myron Marston wrote:

> Ashley: thanks for posting the example.  It's nice to see how this all
> fits together.
> Re: RSpec 2 for ruby 1.8.6: I don't see RSpec 2 as being all that
> useful for Rails 2.x projects on ruby 1.8.6.  However, it's still very
> important for gems.  I just converted one of my projects (VCR[1]) to
> RSpec 2, and VCR supports ruby 1.8.6, 1.8.7 and 1.9.1.  If we remove
> ruby 1.8.6 support from RSpec 2, I'd have to migrate back to RSpec 1.x
> so that I can continue to run the spec suite on 1.8.6.  I imagine
> there will be plenty of other libraries that will want to upgrade to
> using RSpec 2 after the final release, while still supporting 1.8.6.
> Good news: I messed around with module_exec some more, and I think I
> have a working implementation for 1.8.6[2].  This was complicated
> enough that I wanted to work on it in isolation from RSpec; hence the
> separate github project.  We'll probably want to re-organize it a bit
> before merging it in, if it's deemed "good enough" to work for our
> needs.  It has some specs that pass for module_exec on 1.8.7, and they
> pass on 1.8.6 with my implementation, too.  There may be cases where
> it still doesn't work quite right, though--feel free to fork, add
> specs, etc.

Hey Myron - I think what you have is perfectly fine. The only issue I ran into was that of defining instance methods, and your solution seems sound. I wouldn't even bother to undef those methods. We're not putting module_exec in as an API. In fact, in rspec, I think we should change the names of module_exec and instance_exec to something rspec-specific so that users don't rely on our implementation for other purposes. Something like:

def module_eval_with_args(*args, &block)
  if respond_to?(:module_exec)
    module_exec(*args, &block)
    # custom solution

At that point, as long as all the shared group specs are passing, we're good. Make sense?

> Myron
> [1] http://github.com/myronmarston/vcr
> [2] http://github.com/myronmarston/module_exec
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

More information about the rspec-users mailing list