We have developed an app in Rails 3 (planning to upgrade to rails 4) this year. We have sold this to 2 customers and now the problems will begin.
In the core all the apps are more or less the same except for the stylesheets, some html and some classes.
Now I am looking for a way to manage these applications for when we have for example 100 customers running the product.
Therefore the following questions:
- How do you manage updates for all customers?
- How do you manage fixes for all customers (for 2 customers I just cherry-pick at the moment but for 100 customers you can't do that, some customers code is different so something like mass cherry-pick will not always work)
- How do you manage new customers?
- Is it possible to work with stylesheet files to separate the code from the style like in drupal?
- Any more concerns can always be added.
Kind regards.
EDIT1: the thing we provide is a site which has a core but each customer can change anything to the site from the core to the design.
EDIT2: RAILS CODE: we have a Rails admin interface let's say we make all the code customizable via settings:
If Settings.value_shown == true
User.do_something
else
User.do_something_else
end
CSS / SASS CODE: let's say we make 1 clean CSS and per customer we create an overwrite class that overwrites all the standard code.
EDIT3: Let's say each of the 50 customers has 3 branches a DEV / QUALITY / PRODUCTION system. We develop a fix for all customers how to do you deploy this fix to all customers?
I get the impression you're hardcoding the differences? This will not scale, you need to be deploying the same codebase for all your clients otherwise you're setting yourself up for a monumental headache.
Build all the customisable components as client settings and store them in the database, so all your clients can run from the same codebase. If it's the layout and components they need to be able to change then look at building something using Shopify's Liquid, or similar. I've not used it but I've heard it's excellent.