Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to refer a local gem in ruby?

I pack some ruby code into a gem. I want to refer the code in the gem in some other code. So in the Gemfile I specify the gem's name, version, and local path. Like:

gem 'gemname','0.x', :path => 'RELATIVE_PATH_TO_GEM_FILE'

After bundle install, I see

Using gemname (0.x) from source at RELATIVE_PATH_TO_GEM_FILE

But when I run the code, it can't find the code in the gem. LOAD_PATH shows ABSOLUTE_PATH_TO_GEM_FILE/lib.

No wonder it can't find the code, there's only gem file under ABSOLUTE_PATH_TO_GEM_FILE. it's not unpacked. So there's no lib directory.

if I gem install that gem file into my system, then all works fine. I can see the gem file was unpacked into source code files. But my question is if it can refer the local gem file directly somehow?

like image 471
user810923 Avatar asked Jun 22 '11 18:06

user810923


2 Answers

No, you can't refer to a .gem file directly.

In your terminology, you need to use an "unpacked" gem.

:path => '/foo/bar/'

where /foo/bar/ is a (gem) directory with lib/, etc.

like image 126
Seamus Abshere Avatar answered Sep 17 '22 11:09

Seamus Abshere


We made a local (not system-wide) gems location. We set these environment variables:

GEM_HOME=/path/to/rubygems-1.3.4
RUBYLIB=/path/to/rubygems-1.3.4/lib/

By setting those, we can then do 'gem install ...' to put the built gem into that directory, and ruby knows where to find them.

like image 36
JBB Avatar answered Sep 20 '22 11:09

JBB