This is a known problem, as are camel case class names.

If you look at the rspec for this you can see that the tests don't
check either of these conditions.

--Mike

On Sep 12, 8:51 am, Francis Joanis <[EMAIL PROTECTED]> wrote:
> Hi Paul, thanks for your reply.
>
> I looked at many_to_many.rb:60 and I see exactly what you mean.
>
> I tried to monkey around but I haven't been lucky so far. Here are the
> three roads I tried:
>
> 1- Tried to change ManyToMany.setup so that it parses the model_name
> variable for "::" and then iteratively recreate each top/mid level
> module down to the actual model class.
> 2- Tried to flatten/concatenate the model names by removing any "::"
> in them.
> 3- Tried to remove altogether the parent namespaces at runtime by
> using Extlib::Inflection.demodulize(...)
>
> In all cases, I ended up breaking something since other code elsewhere
> seems to not be expecting "::" into the model names. Also,
> Extlib::Inflection.underscore(...) sometimes created problems because
> it was replacing the "::" by a "/" - which looks like it is what it's
> supposed to do - but the code using it got confused by the "/".
>
> My guess is that this assumption is not localized to many_to_many.rb.
> I might give it a shot again (I'll get to learn the code :) ) and will
> keep you posted if I ever make any progress.
>
> Do you think I should create a new ticket in the bug tracker or reopen
> one of the existing ones?
>
> Regards,
> Francis
>
> On Sep 11, 6:47 pm, paulcody <[EMAIL PROTECTED]> wrote:
>
> > Francis: I'm and newcomer to DataMapper myself; I'm having the same
> > issue that I'm trying to debug now... The offending code line 60 in
> > many_to_many.rb breaks as the ruby methods
> > Module.const_defined?, .const_get, .const_set are not namespace
> > aware.  However, even when you workaround that line, it still breaks
> > for reasons that I'm still working on...  Any thoughts from datamapper
> > developers?
>
> > Thanks,
> > Paul
>
> > On Sep 11, 1:16 pm, Francis Joanis <[EMAIL PROTECTED]> wrote:
>
> > > Hi all,
>
> > > I'm quite new to DataMapper and while implementing my model I
> > > encountered the following error when trying to implement a many-to-
> > > many relationship with objects that are within namespaces.
>
> > > I am running dm-core from the git master. I also saw that two tickets
> > > (that could be related) had been opened on the bug tracker (tickets
> > > 202/203).
>
> > > The error is:
>
> > > /usr/lib/ruby/gems/1.8/gems/dm-core-0.9.6/lib/dm-core/associations/
> > > many_to_many.rb:60:in `const_defined?': wrong constant name
> > > Circus::Show::ClownMask (NameError)
> > >         from /usr/lib/ruby/gems/1.8/gems/dm-core-0.9.6/lib/dm-core/
> > > associations/many_to_many.rb:60:in `setup'
> > >         from /usr/lib/ruby/gems/1.8/gems/dm-core-0.9.6/lib/dm-core/
> > > associations.rb:122:in `has'
> > >         from circus.rb:10
>
> > > Here's the example code (sorry if it looks lame :) ):
>
> > > (CODE_BEGIN)
> > > require 'rubygems'
> > > require 'dm-core'
>
> > > module Circus
> > >    module Show
>
> > >       class Clown
> > >          include DataMapper::Resource
> > >          property :id, Serial
> > >          has n, :masks, :through => Resource
> > >       end
>
> > >       class Mask
> > >          include DataMapper::Resource
> > >          property :id, Serial
> > >          has n, :clowns, :through => Resource
> > >       end
>
> > >    end
> > > end
>
> > > DataMapper.setup(:default, 'sqlite3::memory:')
> > > DataMapper.auto_migrate!()
> > > (CODE_END)
>
> > > Note that if I remove the Circus and Show namespaces, everything seems
> > > to work fine.
>
> > > Thanks,
> > > Francis
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to