Tom
Tom

Reputation: 9643

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?

Upvotes: 3

Views: 101

Answers (3)

Thomas Klemm
Thomas Klemm

Reputation: 10856

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.

Upvotes: 0

nurettin
nurettin

Reputation: 11736

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.

Upvotes: 4

VonC
VonC

Reputation: 1323273

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, config:add, config:get and config:remove to manage your config vars

Upvotes: 1

Related Questions