Marcus Mansur
Marcus Mansur

Reputation: 337

Rails Engine gem using another Rails engine gem from git

Rails 4 @ Ruby 2

So i have two engine (A, B) gems that cannot be uploaded to Rubgems because the code is private, so im using git.

A must use B, so basically i should add B as a dependency in A gemspec. As far as i know, gemspec doesn't allow git based gems as a dependency inside gemspec.

I tried to use A gemfile but no luck. Is there a way out?

Upvotes: 3

Views: 837

Answers (1)

Metin
Metin

Reputation: 95

For development or test, you can do it in Gemfile. You can even point it to use your local folder.

gem 'gem_b', path: "/path/to/the/folder"

or to use a git reference

gem 'gem_b', git: "[email protected]:user/gem_b.git"

This will allow you to do the development and testing.

Another option is this. If you have 2 engines, I assume you also have a Rails app to use them. In that rails app, you can simply require them in Gemfile one after another using git reference.

gem 'gem_b', git: "[email protected]:user/gem_b.git"
gem 'gem_a', git: "[email protected]:user/gem_a.git"

If you must declare this dependency in gemspec, you can build the gem using rake;

cd /path/to/gem_b
rake build

This will create a gem_b.gem file under pgk folder.

Then you can install it in your local using gem instal like this

gem install pgk/gem_b.gem 

Now you have gem_b installed in our local. There will be no problem adding it as a dependency in gemspec.

When you are ready to release your application, you need to copy gem_b.gem to your server and install using usual way;

gem install /full/path/to/gem_b.gem 

Upvotes: 3

Related Questions