How to Refer a Local Gem in Ruby

How can I specify a local gem in my Gemfile?

I believe you can do this:

gem "foo", path: "/path/to/foo"

How to reference a local gem from a ruby script?

Make sure that your gem name as same as in Gemfile (e.g. custom_gem)

# Gemfile

source "https://rubygems.org"

gem "custom_gem", path: "/home/username/path/to/custom_gem"

Don't forget to actually install this gem using bundler

bundle install

After that, the script should be ready to use by bundle exec ruby script.rb

# script.rb

require 'custom_gem'
CustomGem::Do.something

How do I specify local .gem files in my Gemfile?

This isn't strictly an answer to your question about installing .gem packages, but you can specify all kinds of locations on a gem-by-gem basis by editing your Gemfile.

Specifying a :path attribute will install the gem from that path on your local machine.

gem "foreman", path: "/Users/pje/my_foreman_fork"

Alternately, specifying a :git attribute will install the gem from a remote git repository.

gem "foreman", git: "git://github.com/pje/foreman.git"

# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"

# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"

# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"

(As @JHurrah mentioned in his comment.)

Require local gem ruby

require checks for files in $LOAD_PATH. You can put your gem in one of those directories in order to require it directly. If you don't like your load path, you can add a new directory to it in your script, or set the RUBYLIB environment variable which is added to the load path.

How to tell the Gem File to use a specific local copy of a gem

Try, in your Gemfile:

gem "mygem", :path => "/MyPath/MyGem.gem"

Note that it's probably best to use a relative link in there, like:

gem "mygem", :path => "vendor/MyPath/MyGem.gem"

how can I go about using the Gemfile's :path argument to reference local gems in development with a value that is OS agnostic?

Use File.join('..', 'Ruby_Libs', 'my_gem'') instead of "../Ruby_Libs/my_gem".

gem "my_gem", :path => File.join('..', 'Ruby_Libs', 'my_gem'')

How can I install a local gem?

Yup, when you do gem install, it will search the current directory first, so if your .gem file is there, it will pick it up. I found it on the gem reference, which you may find handy as well:

gem install will install the named
gem. It will attempt a local
installation (i.e. a .gem file in the
current directory), and if that fails,
it will attempt to download and
install the most recent version of the
gem you want.

Run gem from local source code

From the root directory of your gem, try this to execute lib/MyGem.rb:

ruby -Ilib lib/MyGem.rb

or test your gem interactive:

irb -Ilib
> require 'mygem'
true

Using rspec with a local gem

You need to run:

bundle exec rspec

If you are not using the bundle evironment rspec won't know what you put in your Gemfile and just use the Gems it finds installed.



Related Topics



Leave a reply



Submit