简体   繁体   中英

Issue with require gem, when passing git-repo to gem in Gemfile

I haven't done this in the past, so may be I am missing something here.

I changed the Gem files for 'ruby-git' locally and it worked fine. I forked a gem and made same changes to it, in my Github repo.

While building the Sinatra app to push it to Heroku, I changed the Gemfile as follows:

gem 'git', :git => "git://github.com/silverSpoon/ruby-git.git"`  

When I run bundle install , I get

Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using rugged 0.21.0
Using sinatra 1.4.5
Using git 1.2.8 from git://github.com/silverSpoon/ruby-git.git (at master)
Your bundle is complete!
  • But, when I say ⇒ gem list git , it doesn't show the gem as installed.
  • When I run, ⇒ bundle show git , it shows the path where the gem repo was installed -
    /Users/jatinganhotra/.rvm/gems/ruby-2.1.3@527website/bundler/gems/ruby-git-c7fb35af1a99
  • When I run my app, or run irb and do a 2.1.3 :001 > require 'git'
    it get the following error -
    LoadError: cannot load such file -- git

Am I missing something silly here?

Gems installed by Bundler through git are not handled the same way as normal gems :

Because Rubygems lacks the ability to handle gems from git, any gems installed from a git repository will not show up in gem list . They will, however, be available after running Bundler.setup .

In order to use the gem you need to do it through Bundler. Either use bundle exec when launching IRB or your app, or use Bundler.setup from within your code.

$ bundle exec irb
> require 'git' # should work ok

or:

$ irb
> require 'bundler/setup'
> require 'git' # should also work

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM