> 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