lmirosevic
lmirosevic

Reputation: 16317

How to use gem from GitHub on Heroku?

I've forked the redis depository on github to https://github.com/lmirosevic/redis-rb

I added it to my Gemfile:

gem 'redis', :github => 'lmirosevic/redis-rb'

And I require the gem inside my Sinatra app:

require 'redis'

However it fails with the following error:

/app/vendor/ruby-2.0.0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- redis (LoadError)

Any suggestions on what could be wrong? It seems like it should work!

EDIT

I should note that the bundler phase is fine. The problem seems to be in the require step. Bundler gives me this output:

Using redis (3.0.4) from git://github.com/lmirosevic/redis-rb (at master)

I should also say that my directory structure is something like this. Not sure if this makes a difference.

/
  .env
  Gemfile
  Gemfile.lock
  Procfile
  /lib
    my_sinatra_app.rb
  /config
    ...

Upvotes: 1

Views: 153

Answers (1)

Frederick Cheung
Frederick Cheung

Reputation: 84114

You must have

require 'bundler/setup'

in your app or else you're not really using bundler: this is what ensures that the gem versions loaded are the ones in your gemfile and sets up load paths for anything not installed globally.

Calling Bunder.setup allows you to control what groups are used, but if just using the default group is fine then you don't need to do this.

If you aren't setting up bundler then your gemfile is used to install the required versions of the gems but then bundler is no longer used - your app will used whatever gems are installed, whether the versions match or not and you won't be able to use gems that aren't installed in the default gem load paths.

Upvotes: 1

Related Questions