I\'m currently building 2 API\'s using Ruby on Rails. One if for reading (finding objects, querying) and the other one is for actually writing to it, involving a kind of com
The way I would do it is a 'Mountable Engine'. Check out the excellent Railscast by Ryan Bates for starters and the engine-section at api.rubyonrails.org for further details.
With best regards, Mandi
If you just want to share models, you can add the other project models folder into your autoload paths:
rails new test1
rails new test2
cd test1
rails g model User
cd ../test2/
# ACTION REQUIRED: edit config/application.rb adding this line
# inside the class Application < Rails::Application block:
#
# config.autoload_paths += %W(#{config.root}/../test1/app/models)
#
mkdir db/migrate
cp ../test1/db/migrate/*_create_users.rb db/
mv db/*_create_users.rb db/migrate/
rake db:migrate
rails r 'puts User.inspect'
#=> User(id: integer, created_at: datetime, updated_at: datetime)
You can also set the whole thing in order to have the two app/models
folders as private, using a third shared folder, adding this to the projects:
# config.autoload_paths += %W(/path/to/a/shared/folder)
This folder can even be not the same folder for each project, so it could be a path to a git submodule , for example (if you use GIT, I reccomend this solution).
Another option could be pointing app/models
to a shared folder with a soft link
You could try git submodule for that job.
http://git-scm.com/book/en/Git-Tools-Submodules
You could take a look at:
My trick for doing this is to not actually use Rails tricks. I use "git" tricks, and pull in code from a 3rd, shared-code repo. I put this into both apps as an engine, and as an external git reference.
It's a little more work, but once you have done it once in one app, it's easy to use that as a template for the next one, too.