How to organize 50 related rails apps with git?
I’m embarking with 50 related rails apps that will have minor differences between them – the css may differ and maybe each app will have different routes and different titles for the views for the sake of SEO and so on.
But i want all 50 apps to be consistent when i change other things. So basically i will have to end up with my own cms and each website will have different settings.
I’m sure i’m not the first person to encounter this problem. How would i go about organizing this while using Rails, git, github and heroku so that when i deploy, all apps update and remain consistent but still hold their own settings?
3 Solutions collect form web for “How to organize 50 related rails apps with git?”
I fork a base project and keep it as “upstream”.
I clone the forked project in my development environment and keep it as “origin”.
So my development environment has an origin and an upstream.
When I do something that effects all forked projects, I do the change in upstream, then I go into each project, pull from upstream and merge.
You can also have a hierarchy of upstreams and keep them synchronized with the original upstream.
If those are purely configuration files, the best approach is to follow the Heroku page “Configuration and Config Vars”:
Don’t put those files in a Git repo itself.
Use the Heroku CLI’s
config:removeto manage your config vars
I’m a huge fan of only having to maintain one project if it’s possible. If it’s only the (user-controlled) styling of an app you might go with a multi-tenant approach in the basecamp style. Your app would display different endpoints, e.g. differentiated by subdomains, that you could also point different top-level domains to. The variable parts of the app then needs to be stored in the database, such as e.g. the styles, layouts, and whatever user-controlled content you have. One approach is outlined in the answers to this question, though there are definitely more ways.