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
Trying to Get Svn2Git Working on Windows
Add Current Time Before Log Message
Solving Dependency Constraints
Why Is a String Key for a Hash Frozen
Why Does Psych Yaml Interpreter Add Line Breaks Around 80 Characters
Why Do I Need Asterisk Before an Array
How to Use Coffeescript in the Views Executed on Render.Js
Sinatra + Heroku + Datamapper Deploy Issues with Dm-Sqlite-Adapter
Fast Fuzzy/Approximate Search in Dictionary of Strings in Ruby
Simple_Form with Bootstrap Check Box
Date Range Facets with Sunspot in Ruby on Rails
How to Make Block Local Variables the Default in Ruby 1.9
Benefits of Using 'Hash#Fetch' Over 'Hash#[]'
How to Parse a HTML Table with Nokogiri
"Ruby.Exe Is Not Recognized as an Internal or External Command" in Windows 7
How to Add Attribute to Nokogiri Node
After Ruby 2.4 Upgrade - Error While Trying to Load The Gem 'Uglifier' (Bundler::Gemrequireerror)