From: Ryan Leavengood Date: 2006-05-04T01:56:25+09:00 Subject: Re: Sharp knives and glue On 5/3/06, David Pollak wrote: > > Well... what are the consequences? For example, Instiki 0.11 works just > fine under WEBrick, but breaks running under FastCGI because of a load > sequence issue with the 0.8.x rails libraries that are shipped with Instiki > and whatever version of stuff is in my Gems directory. > > The consequences of this is I can't use a Rails app in my normal production > environment. Sure, I could figure out what's going on... but that's a waste > of my time (I've already lost 3 hours of consulting revenue trying to > install Instiki as a FastCGI rather than a port-forwarded WEBrick app.) > > The consequences of this is I'm screwed. > > The consquences of this is I can't recommend Ruby to my enterprise clients > because they can't predictably deploy applications unless they have a > freeze-dried perfectly versioned system that will never change because of > the unpredictability and instability of changing library versions. > > Oh... BTW -- Instiki passes its unit tests because the load sequence is > correct for the unit tests... but it's not correct when Instiki is launched > as a CGI or FastCGI. So... the consquences of this is that you can't trust > unit tests in Ruby because they can be impacted by Module/Class load > sequences. But of course in the Java world there are never any incompatibilities in different versions of libraries. I can take a Java 1.1 compiled application and run it fine in the latest Java 1.5.whatever. Sun and IBM and Microsoft Java VMs all run in exactly the same way. No one could ever have a older JAR file on their CLASSPATH which causes a normally fine application not to run because of library differences. Since it isn't always obvious over the email medium, I'm being sarcastic. Then of course in the C++ world there are plenty of problems with DLL incompatibilies as well. So, in other words I think your above example, while certainly an annoying situation, is not a valid argument against Ruby being used for big applications. Any application that relies on external libraries can have problems like this. Ryan