Open source support system architecture (ROR) query

Hi guys,

Intro - Me and a few members have developed a self hosted support system
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
core project.

What we’re trying to do -

  1. Support Project will have features added by a couple of members in
    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
    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
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
work in git branches somehow.

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

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

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
engine using any scripts/tools without having to create a new project
move the code over. We’re planning to follow this