Open source support system architecture (ROR) query

Hi guys,

Intro - Me and a few members have developed a self hosted support system on rails 4 and we are building more features around it so that projects can easily adapt it.

Problem - Customizing the project for another client without effecting the core project.

What we’re trying to do -

  1. Support Project will have features added by a couple of members in our team regularly.

  2. MyCustomSupportProject is a fork of SupportProject.

  3. We want to pull in SupportProject new features into MyCustomSupportProject and still have MyCustomSupportProject features being added without conflicting with SupportProject features.

Is there a way to handle a situation without using rails engine / gem?

Any recommendations to handle a situation like this in a clean way ?


Vivek sampara

You have removed the two options that would allow you to do this. Why can’t you make SupportProject a Rails engine, or break out some of it’s functionality into Gems?

A rails engine is how I’d do it myself but if that’s off the table, the only way I see that could remotely (and poorly) work would be to manage the work in git branches somehow.

you’d have to be very careful and it’s a bad idea - but could be possible.

have a core branch of code and a set of production branches… when the core changes you can merge it over the production branches. just don’t ever merge the production branches over the core… lol

it’s a bad idea… use an engine - they work nicely and aren’t very hard to do

Sounds to me like a gem that represents some of your core domain logic, being developed by a singular or group of teams (and possibly being forked for development by multiple teams as you say) is a great solution to your problem.

Why don’t you want to use a gem?


I think I’m convinced to go via rails engine as doing via git branches makes it difficult to manage later on ( as Allen suggested ) but as the SupportSystem is already half way through, Can i turn that app into rails engine using any scripts/tools without having to create a new project and move the code over. We’re planning to follow this