I found a post that address this. I guess the nature of 
instance_exec/eval has changed with respect to bindings.

http://coderrr.wordpress.com/2009/06/02/fixing-constant-lookup-in-dsls-in-ruby-1-9/



Charlton Wang wrote:
> The following code will dynamically create a class, C, inside of module
> A. Class C would like to include module B which is also defined in
> module A but the 'include B' line for C fails with `module_eval':
> uninitialized constant Class::B (NameError).
> 
> I've included a class D definition as well which obviously works.
> 
>     module A
>     end
> 
>     def create_class(c, &b)
>         klass = A.const_set(c.capitalize, Class.new)
>         klass.instance_exec(&b)
>     end
>     A.module_eval <<-EOF
>         module B
>             def self.append_features(m)
>                 puts "B"
>             end
>         end
>         class D
>             include B
>         end
>         create_class :c do
>             include B
>         end
>     EOF
> 
> Any insight would be greatly appreciated.
> 
> Thanks,
> Charlton

-- 
Posted via http://www.ruby-forum.com/.