# Is Rails suitable for highly customized standard software

**URL:** <https://www.ruby-forum.com/t/is-rails-suitable-for-highly-customized-standard-software/155553>\
**Category:** Rails\
**Created:** [December 13, 2008, 12:23pm UTC](https://www.ruby-forum.com/t/is-rails-suitable-for-highly-customized-standard-software/155553 "2008-12-13T12:23:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![amcniece](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/8edcca/32.png) [@amcniece](https://www.ruby-forum.com/u/amcniece)\
**Post date:** [December 13, 2008, 12:23pm UTC](https://www.ruby-forum.com/t/is-rails-suitable-for-highly-customized-standard-software/155553/1 "2008-12-13T12:23:31Z")

</div>

Hello, I am working in a small software company. We are developing  
business applications for a very niche industry.  
At the moment our software products are mainly fat client windows  
applications which are accessing different kinds of database servers.  
Now we plan to slowly move to web applications. We do not host the  
applications for our customers, so it is necessary that we ship a  
complete solution which is deployed at the customer site.  
In total we will have about 20 to 40 customers deploying our web  
application.

Unfortunately every customer needs a specific customized user interface  
and sequence of dialogues, but the general business logic is the same.

So my question: Is Ruby on Rails capable for this kind of requirements?

A colleague of me has already begun to develop a complete new web  
application framework in pure java and servlets without using any  
existing web application framework technology. He has almost no  
background in web applications and is doing it all alone.  
My thinking is that this strategy is a big mistake. In 2008 it is  
essential to use a mature web application framework for a small company  
with not more than 3 web developers.  
Developing a own new framework makes no sense at all. Especially for a  
small company with a very niche market.

Now I am looking for convincing arguments for a discussion with our  
boss.  
Any help would be very much appreciated.  
Regards,  
Andy

---

<div class="post-metadata">

**Author:** ![amcniece](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/8edcca/32.png) [@amcniece](https://www.ruby-forum.com/u/amcniece)\
**Post date:** [December 13, 2008, 9:50pm UTC](https://www.ruby-forum.com/t/is-rails-suitable-for-highly-customized-standard-software/155553/2 "2008-12-13T21:50:59Z")

</div>

I would say go for it. There are a number of ways to approach your  
situations. A simple solution might be to create plugins with models  
and controllers, and build a different app for each client, basically  
providing the views and configuration. More complex and powerful  
alternatives exist of course.

On Dec 13, 5:23 am, Andy M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![amcniece](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/8edcca/32.png) [@amcniece](https://www.ruby-forum.com/u/amcniece)\
**Post date:** [December 14, 2008, 3:27am UTC](https://www.ruby-forum.com/t/is-rails-suitable-for-highly-customized-standard-software/155553/3 "2008-12-14T03:27:20Z")

</div>

Andy M. wrote:

> Unfortunately every customer needs a specific customized user interface  
> and sequence of dialogues, but the general business logic is the same.
> 
> So my question: Is Ruby on Rails capable for this kind of requirements?

Absolutely, if you can set some ground rules.

What you are selling is not a finished app, but a series of feature  
requests.

To solve each feature request as soon as possible, you need a Capistrano  
account  
on your customers’ servers. That means, each time you finish a request,  
you  
enter ‘cap deploy’, and the end users’ experience upgrades in real-time,  
right  
between page hits.

On your side, to satisfy these feature requests, you need highly  
decoupled code,  
with absolutely saturating automated tests. That is what Model View  
Controller  
and unit testing are all about. Each time you make one tiny edit, you  
run all  
the tests for that model, view, or controller. If the edit is for a  
feature for  
one customer, the tests defend the user experience for all the other  
customers.

> A colleague of me has already begun to develop a complete new web  
> application framework in pure java and servlets without using any  
> existing web application framework technology. He has almost no  
> background in web applications and is doing it all alone.

Unless he is a supergenius who deserves to become our next overlord, he  
will  
epic-fail. Your goal now is to prevent the inevitable, as soon as  
possible.

> My thinking is that this strategy is a big mistake. In 2008 it is  
> essential to use a mature web application framework for a small company  
> with not more than 3 web developers.

Absolutely. You will spend all your time on the plumbing. May I ask if  
this guy  
is working alone, long hours, at home, and without unit tests or  
frequent releases?

> Developing a own new framework makes no sense at all. Especially for a  
> small company with a very niche market.

Rails is exactly what you need. Firstly, it is dynamic, so you can do  
much more  
stuff in much fewer lines of code than Java. Some guestimates place the  
ratio of  
code lines at 1 to 10.

Next, Rails leverages unit tests, so you can write new tests that target  
high-level things, without reinventing _their_ plumbing.

Next, Rails makes “metadata” rather easy. You will soon discover that  
each  
customer needs a different configuration. This topic is called “Software  
Product  
Lines” - look it up. As you add configurations, you will add unit tests  
that  
cross-check their methods. The more product lines the better, because  
the  
configurations and unit tests work together to cross-test everything,  
and  
soak-test all your code abilities.

These techniques do not require heroism. They require small, co-located  
teams,  
typically pair-programmers, who work reasonable hours. A week of work  
like this  
consists of collating the feature requests with highest business value,  
knocking  
each one down, and deploying the application when each one is finish.

Your colleague is raising the risk much higher than you need.

–  
Phlip
