It’s hard to formulate the question really, so I’ll just explain the situation.
I am working on an application that consists of several routines. The main application simply provides a navigation bar and some basic functions, such as user configuration and permissions, while auxiliary applications provide actual functions.
Now this is a Rails 2 application, and sub-applications are embedded in frames, it is not a very good design and quite complicated to configure. Fortunately, we now have engines, and that would be a more reasonable solution for this application.
Until now, everyone lives in subversive activities and can be updated immediately, the general code uses external ones. We would like to switch to git while we are engaged in restructuring and refactoring. I searched the Internet for the past few days about the bundle, git submodules, and git subtrees, but I did not find a good description of how to properly manage a large project that consists of several engines / gems when you develop on all of them at the same time.
In particular, I would like to be able to:
- use the bundler to manage dependencies
- don't install our own gems and engines in the global gem path, but relative to the main application, like git storage
- We have our own nuggets and engines as a git repository (possibly using a local Bundler constraint)
- an easy way to get all the dependencies (bundle install) that pull out the latest version of our own gems and engines, if this is not possible, then one git command will pull out all our own gems and engines (maybe a rake task?)
- make it easy for new developers to quickly configure the entire development environment (git install the application locally, install installation dependencies, including all proprietary aircraft and engines).
- deployment with capistrano, easy
What I already thought about:
- including everything in one repository, the goal of individual Gems / Engines seems to defeat me, also I think that this will not allow us to manage the dependencies of the main application on our Engines through the Bundler
- using submodules, I read too many messages about why this is bad, and with our number of developers it is only a matter of time until someone makes a submodule pointer to a commit that exists only in its local repo
- The git subtree utility seems to me rather complicated.
Do you have any of you who have a similar installation and how do you manage to make updating and making changes as easy as possible? Where do you put your Engine / Gem code that the application depends on?
TL DR How to manage a large rails project that consists of several engines and gems?
maufl source share