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.