> My premise is that Ruby is not ready for enterprise use because the > inability to predict the behavior of programs. If one cannot predict the > behavior of programs, one cannot test the programs. If one cannot test the > programs, one cannot deploy the programs into environments that have > significant regulation (e.g., financial services, health care, insurance, > etc.) I'm a Ruby newbie, but having done a bunch of work in other languages, I do think you have a point. OTOH, I think you're exaggerating the extent of the problem. As others have mentioned, various testing practices can mitigate the legitimate issues that you put forth. It's also worth stating, again, that these kinds of problems aren't exclusively Ruby's. > I gave as an instance of this issue, Instiki. So... let's drill down. ... > - If a non-complex Ruby app written by a skilled Ruby developer using > standard Ruby tools breaks, how can a large company trust that a very > complex Ruby program that has passed QA won't fall into the same issue if > the first user opens the "latest transaction" rather than the "account" page > first thus causing a different order for class loads. IMO, a large company will have their own QA procedures which should test the deployment platform. In this particular example it's hard to say that this provides anything more than a single datapoint. Besides, a skilled programmer like yourself has diagnosed the problem right? In my experience, these kinds of deployment issues bite many projects regardless of the language chosen. Certainly there is a bit of frustration involved in tracking down a kind of bug that might not happen in other languages that one is familiar with, but there are other kinds of bugs that happen in other languages that don't happen in Ruby. > We can take two approaches to this issue: > > 1. Not worry about and 3 years from now sit around saying, "Ruby > coulda woulda shoulda" > 2. Discuss the issues in a way that leads to solutions being found so > we can all improve something that we're all passionate about. I agree that the Ruby community should be thinking/talking about these kinds of things. I also think that there is a natural tendency to get defensive/offensive about what one is passionate about. I think what would be most effective at this point is to discuss some possible solutions to the issues raised rather than trying to continually discussing the problem. These facilities might already exist in Ruby, as I am a newbie myself, but for example: is there any way in Ruby to log the order of class loading? Perhaps a way to require or specify order dependencies of the loading? FWIW, I too don't feel comfortable with changing lower level classes that alter "default" behavior, so it would be nice to at least have some easy way of detecting if this has occured for the "core" Ruby classes. Maybe a RubyLint? I see there is CheckR on RubyForge, but it looks to be in the very early stages. Anyway, I'd like to have those more knowledgeable/skilled discuss possible solutions beyond the testing suggestions offered before. -- Brian Moelk bmoelk / NObrainendeavorSPAM.FORcomME http://www.brainendeavor.com