On Aug 31, 2006, at 9:03 PM, Hemant . wrote:

> Recently while coding in rails, i had a column called in one of the  
> tables
> and hence was wrapped up by ActiveRecord.
> Guess, what it broke entire of the code, because quote is a already  
> defined
> method somewhere in rails. I had trouble in finding out the root of  
> the
> problem.
>
> Another example, as a newbie to ruby and rails I was using  
> login_engine in
> my rails code. I have a table called messages in my database. Now,
> login_engine controller code is like this:
>
[snip code]
> Guess, what User.transaction was behaving oddly because it was  
> throwing
> warning "Messages already defined constant". The error was shown in  
> web
> server logs and hence again was a little difficult to track.
>
> Now, how as a new guy to ruby and rails, how do i know , i  
> shouldn't have a
> column called quote and i shouldn't have a table called messages.
>
> I am a Qt/C++ programmer also, and the namespace issue is mostly
> non-existent there.First of all, its because all the Qt classes  
> begin with Q
> and hence you know.But Ruby library authors seems a little lax on  
> this, and
> open classes make the entire thing a little nifty and difficult to  
> debug if
> you are caught on the wrong foot.Either library authors should avoid
> writting classes like Messages or ruby should give option of  
> importing only
> certain methods from a module.
> Something like:
>
> using std::cout;
>
>
>
> But still i am new to ruby(3 months precisely), so if you wish you  
> can take
> my assertions with a grain of salt.

This is in some ways more of a Rails problem than ruby problem and  
involves the way rails works, with you inheriting from Rails'  
classes. That particular problem would actually not be solved by C++  
style namespaces or even Q-prefixes. A potential solution to the  
problems you've experienced are the idea of selector namespaces which  
have been tossed around on the ML before.