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