I'm totally agree with Jeremy.
I joined in March 2007 an enterprise where it had been decided :
- Build a Portal with RoR with Web 2 Features
- Build functional screens over a legacy database , in order to webify
their Client/Server applications.
The main problem i would say is how you sell RoR to your management.
In my enterprise, the architect, at the beginning of this project, did
only demos to the management based on :
- Generation of model, migration (whereas half of the project woould
based on a Legacy database), and scaffold.
Main people of the team (manager included), who were used to build C/S
applications with Oracle Forms (a quite productive tool in the C/S
domain), where quite enjoyed after seeing that in three command lines
you could have a running (but not definitive) application.
Finally they didn't understand the there would code to write (even if
it is well more concise than Java)
So be very careful when you sell RoR : do that after having well
considered all the functional needs and the environment constraints
(especially when using legacy datamodel).
We exactly had problems on the three main points from Jeremy:
1) Legacy database schemas will threaten your sanity if you let them:
Hacks have been done to create Oracle Views over the "old"
denormalized tables. Right for consultation, but not easy for Edit/
Create. And productivity, as shown in the demo, decreased a lot.
The management was always saying the development was not productive
enough
2) Its web service interfaces outside of REST are lacking (enterprise
to many is a mess of SOAP and WSDL trash). If you can get over that,
then it's a great way to expose services.
We Should integrate our application with Third Party (Oracle)
Products, especially one, for the CMS, accepting POST/GET of document
using SOAP Web Services.
The architect should port to Ruby Oracle Java classes from the CMS
Library, and to send SOAP requests, should write from scratch inside
is Ruby code all the SOAP structure (Header, Body)
3) Deployment in a high scalability setup will require some expertise.
Many setups had been chosen before the current one :
Apache/Mongrel, then the choice has been made on LiteSpeed.
Today we've got performances issues - but more on the ActiveRecord
side...the application is connected to an Oracle database: We remark
after an idle time of 1 minute, about ten opened ruby-oracle
connections are dropped. Then, after an activity (click a link then
call an action, executing an operation in database), 10 connexions are
created (so quite long)...
So the project finally has 50% failed, especially for the functional
screens, that should be plugged on the Legacy Data,
A Tool from Oracle has replaced RoR for that : Oracle Application
Express (database centric, PL/SQL powered).
We kept RoR for the portal for two reasons :
- We did many Ajax tricks so RoR saves the day for this
- Portal has its proper datamodel, created from scratch and accepting
RoR conventions.
It was my point of view, after a first RoR experience in the
enterprise.