On Apr 23, 2011, at 10:26 AM, Matthew Van Horn wrote:

> On Apr 23, 2011, at 10:40 AM, Matthew Van Horn wrote:
> 
>>   def self.nullify_contextually?(other)
>>     rspec_root = defined?(RSpec) ? RSpec : Spec
>>     if defined? rspec_root::Rails::RailsExampleGroup
>>       other.ancestors.include?(rspec_root::Rails::RailsExampleGroup)
>>     else
>>       other.ancestors.include?(rspec_root::Rails::ModelExampleGroup) ||
>>         other.ancestors.include?(rspec_root::Rails::ControllerExampleGroup) 
>> ||
>>         other.ancestors.include?(rspec_root::Rails::ViewExampleGroup) ||
>>         other.ancestors.include?(rspec_root::Rails::HelperExampleGroup)
>>     end
>>   end
> 
> Changing 'ancestors' to 'included_modules' seems to make this work for me. 
> ancestors is returning a one-element array with an anonymous class in it.
> included_modules is returning what I'd expect 
> [NullDB::RSpec::NullifiedDatabase, RSpec::Rails::ModelExampleGroup, 
> RSpec::Rails::RailsExampleGroup... etc]
> Could this be a ruby version thing?
> I'm using ree 1.8.7 for the moment.

More likely an execution order issue than a Ruby version issue. RSpec tells 
each example group to include the modules listed in included_modules. If 
nullify_contextually? is invoked before that happens, the modules will be in 
the included_modules Array, but will be included yet, so ancestors would not 
return them. Make sense?
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to