Gutted!

I love programming RoR, but in my limited use I have run up against
roadblocks that say Ruby and RoR are not mature enough yet for my shop.
It is coming, but it isn't there yet.

Examples:

1. Between Ruby 1.8.2 and 1.8.3 the behavior of undefining constants
that had not been defined changed. This broke the version of
ActiveRecord that instiwiki depends on (making the three step install a
7 step install if you don't count looking all over the internet for why
"step 2 - run the application" was failing. The RUBY behavior changed
in a manner that broke a core library.

2. ActiveRecord uses two slightly different idioms for handling primary
keys. One idiom handles non-numeric primary keys well, the other idiom
does not. The net result is that for most operations you can use
ActiveRecord with legacy or distributed systems, but some operations
fail. Before I get flamed, submitting the dozen or so lines of code
fixes for review/approval/inclusion are number 8 on my priority list.

3. ActiveRecord dynamically generates SQL on every call, imposing the
overhead of the prepare phase of the query on every call to the
database. This seriously limits the scalability and performance of the
platform, since in a single SQL call up to 80% of the resources used
may be used during the prepare phase, before any of the work that the
statement does is actually performed.

In contrast, a prepared statement imposes that overhead once on the
first call, and thereafter only the resources used in the actual work
of the statement are used. When you're on the heftiest hardware
available and it's already maxed out, this is not just a stumbling
block, its a serious barrier.

For what its worth, I do not feel that programming in Java is quite as
bad as you seem to. Programming to EJB is that bad, and it is sad that
the java world has become so bloated that we now have an acronym for
plain old java objects (POJO). But let's not blame the failings of
clunky frameworks on the language.

Now that Sun is officially supporting JRuby, it will not be long before
your server guy will have no say in the matter because a ruby app, to
him, will be a java app. Hang on, and work it into a small place
first. It will grow.

Is it dynamically generated SQL, or a dynamically generated prepared
statement? If the latter, many databases will cache them locally.
Even when you do not do the standard "prepare, call, call, call, *"
sequence the db will pull the (prepared) statement from its cache and
use it. Too, some DB drivers do this.

johnson_d@cox.net wrote:

I love programming RoR, but in my limited use I have run up against
roadblocks that say Ruby and RoR are not mature enough yet for my shop.
It is coming, but it isn't there yet.

Examples:

What I know about RoR will fit in a thimble.
What I know about working in "illegal" languages and trying to convince the overlords would fill a bookshelf.

It comes down to this:

If the company is worth sticking with, as a company, and this is the first kick in the head, then leaving might not be the best solution. You will get many kicks before you retire.

Work in RoR on little projects in little pieces.

For example -- develop a proof of concept on webrick. You don't need the sys admins support for that and you can still demonstrate a viable product. If you are able to show how agile the development process is (develop segments in the meeting) then it will have an impact on someone.

It may be a very long time, but it might prove more valuable to you and the company if you stick to doing this.

Michael Campbell wrote:

Is it dynamically generated SQL, or a dynamically generated prepared
statement? If the latter, many databases will cache them locally.
Even when you do not do the standard "prepare, call, call, call, *"
sequence the db will pull the (prepared) statement from its cache and
use it. Too, some DB drivers do this.

RoR uses dynamically generated SQL. The reason given is that not all
RDBMS' support prepared statements.

Until recently, MySQL did not support prepared statements at all. Last
I heard (which is not gospel since I do follow MySQL's status at all),
its prepared statement support was still quite flaky. After MySQL's
purchase of Netfrastructure, I believe that it is more worthwhile
following their status now than it was a year ago.

Since most RoR showcase work is done with MySQL, MySQL's weaknesses
became the driver for the ActiveRecord's approach.

It looks like my post and the OP's posts were confused here.

On company time I have given my assessment that RoR is a "watch"
technology that is worth re-evaluating in a year, after the some of the
out-standing maturity issues in the language and platform have been
ironed out by its users.

My RoR projects are on my time. On my own time and for my own
projects, I will participate in bringing about the changes that I see
as necessary before I can recommend the platform to my employers.
Honestly, I mostly see a little bit of code cleanup required at some
key points that impact large scale environments but not small scale
environments.

Interesting, and good info. Thanks!

I worked for 25 years in product development (mechanical). Here's what
I found: selling a new concept is like hitting a big rock with a
hammer. The first two times you hit it, nothing happens. The third
time, it falls in two.

I never figured out how to go directly to the third blow.

But Tom Allison has a good approach, in my experience:

Work in RoR on little projects in little pieces.

For example -- develop a proof of concept on webrick. You don't need the sys
admins support for that and you can still demonstrate a viable product. If you
are able to show how agile the development process is (develop segments in the
meeting) then it will have an impact on someone.

Except that you might want to use Mongrel.

Eventually, people will notice that your proof-of-concept is better
than 'their' finished product. Or, people will just start using your
proof-of-concept "informally" until the java version is finished, and
eventually, someone will ask "Why do we even do the java version?"

Remember: you can get anything you want in life, as long as you don't
care who takes the credit.

Ron