[rspec-users] and_yield + instance_eval(&block)

Scott Taylor mailing_lists at railsnewbie.com
Fri Aug 10 16:31:18 EDT 2007


On Aug 10, 2007, at 3:43 PM, David Chelimsky wrote:

> On 8/7/07, Scott Taylor <mailing_lists at railsnewbie.com> wrote:
>>
>> I have the following code, which yields instance eval's the block  
>> given:
>>
>> class Foo
>>
>>    def bar(&blk)
>>      instance_eval &blk
>>    end
>>
>>    def baz
>>      yield
>>    end
>>
>> end
>>
>> The effect of this is that self is reassigned:
>>
>> Foo.new.bar do
>>     # here, self is the instance of Foo
>>     # created by new
>> end
>
> Why not just do this, which is already a language construct?
>
> Foo.new.instance_eval { ... }

Maybe a better example would be in place.  Consider the following  
from the Autotest plugin:

Autotest.add_discovery do
   "rspec" if File.exist?('spec')
end

How would you go about testing this?

It's easy enough to test that Autotest receives the method  
add_discovery.  But how would you deal with the block?

Scott



More information about the rspec-users mailing list