home of the gems?

  • Thread starter Kelly Dwight Felkins
  • Start date
K

Kelly Dwight Felkins

------=_Part_23991_26947097.1134094294238
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

I'm trying to understand how gems are loaded. Please help.

A little background:

I decided to do some rails development work on a debian system. I didn't
think rails was up to date, so I tried to do a 'gem update rails'. This
failed because I did not have root access. So I installed the gems locally.
Everthing seemed fine.

I later deleted the local gem directory. Now:

- "gem list" says there are no gems.
- "gemwhich rails" says "can't find rails.
- The application runs fine.

By now it is clear to me that there are gems installed in the default
location. I would like to override this with a local install. I don't
understand how the load path is determined.

Thanks for your help.

-Kelly

------=_Part_23991_26947097.1134094294238--
 
J

Jim Weirich

railsinator said:
I'm trying to understand how gems are loaded. Please help.

A little background:

I decided to do some rails development work on a debian system. I didn't
think rails was up to date, so I tried to do a 'gem update rails'. This
failed because I did not have root access. So I installed the gems
locally.
Everthing seemed fine.

I later deleted the local gem directory. Now:

- "gem list" says there are no gems.
- "gemwhich rails" says "can't find rails.
- The application runs fine.

By now it is clear to me that there are gems installed in the default
location. I would like to override this with a local install. I don't
understand how the load path is determined.

Thanks for your help.

'gem env' will give you some information about your gem environment.
You can control the details here via environment variables:

GEM_HOME -- Path to gem repository where gems are installed by
default.
GEM_PATH -- List of paths of gem repositories to be searched.

-- Jim Weirich
 
K

Kelly Dwight Felkins

------=_Part_8764_20015043.1134151405678
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Thanks for getting back to me Jim. Please bear with me as I try to
understand how this works.

If I do "gem env" I get a stack trace:

kfelkins@lurch:~/bin$ gem env
/usr/local/lib/site_ruby/1.8/rubygems.rb:194:in `report_activate_error':
Could not find RubyGem sources (> 0.0.0) (Gem::LoadError)
from /usr/local/lib/site_ruby/1.8/rubygems.rb:136:in `activate'
from /usr/local/lib/site_ruby/1.8/rubygems.rb:37:in
`require_gem_with_options'
from /usr/local/lib/site_ruby/1.8/rubygems.rb:31:in `require_gem'
from /usr/local/lib/site_ruby/1.8/rubygems/remote_installer.rb:403:in
`sources'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_commands.rb:897:in
`execute'
from /usr/local/lib/site_ruby/1.8/rubygems/command.rb:49:in `invoke'
from /usr/local/lib/site_ruby/1.8/rubygems/cmd_manager.rb:92:in
`process_args'
from /usr/local/lib/site_ruby/1.8/rubygems/cmd_manager.rb:65:in `run'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_runner.rb:9:in `run'
from /home/kfelkins/bin/gem:17
kfelkins@lurch:~/bin$

Still, my rails app will run when I start it with script/server.

So clearly there are a set of gems installed somewhere. These were likely
installed via the debian package management system. So how are gems found?

kfelkins@lurch:~/bin$ echo $GEM_HOME
/home/kfelkins/gem-repository
kfelkins@lurch:~/bin$ ls -l $GEM_HOME
total 16
drwxrwxr-x 2 kfelkins genome 4096 2005-12-08 17:15 cache
drwxrwxr-x 2 kfelkins genome 4096 2005-12-08 17:15 doc
drwxrwxr-x 2 kfelkins genome 4096 2005-12-08 17:15 gems
drwxrwxr-x 2 kfelkins genome 4096 2005-12-08 17:15 specifications
kfelkins@lurch:~/bin$ cd $GEM_HOME/gems
kfelkins@lurch:~/gem-repository/gems$ ls
kfelkins@lurch:~/gem-repository/gems$ echo $GEM_PATH
kfelkins@lurch:~/gem-repository/gems$

Thanks again.

-Kelly


'gem env' will give you some information about your gem environment.
You can control the details here via environment variables:

GEM_HOME -- Path to gem repository where gems are installed by
default.
GEM_PATH -- List of paths of gem repositories to be searched.

-- Jim Weirich

------=_Part_8764_20015043.1134151405678--
 
J

Jim Weirich

railsinator said:
Thanks for getting back to me Jim. Please bear with me as I try to
understand how this works.

If I do "gem env" I get a stack trace:

kfelkins@lurch:~/bin$ gem env
/usr/local/lib/site_ruby/1.8/rubygems.rb:194:in `report_activate_error':
Could not find RubyGem sources (> 0.0.0) (Gem::LoadError)
from /usr/local/lib/site_ruby/1.8/rubygems.rb:136:in `activate'
from /usr/local/lib/site_ruby/1.8/rubygems.rb:37:in
`require_gem_with_options'
from /usr/local/lib/site_ruby/1.8/rubygems.rb:31:in `require_gem'
from
/usr/local/lib/site_ruby/1.8/rubygems/remote_installer.rb:403:in
`sources'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_commands.rb:897:in
`execute'
from /usr/local/lib/site_ruby/1.8/rubygems/command.rb:49:in `invoke'
from /usr/local/lib/site_ruby/1.8/rubygems/cmd_manager.rb:92:in
`process_args'
from /usr/local/lib/site_ruby/1.8/rubygems/cmd_manager.rb:65:in
`run'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_runner.rb:9:in `run'
from /home/kfelkins/bin/gem:17
kfelkins@lurch:~/bin$

Still, my rails app will run when I start it with script/server.

So clearly there are a set of gems installed somewhere. These were
likely
installed via the debian package management system. So how are gems
found?

kfelkins@lurch:~/bin$ echo $GEM_HOME
/home/kfelkins/gem-repository
kfelkins@lurch:~/bin$ ls -l $GEM_HOME
total 16
drwxrwxr-x 2 kfelkins genome 4096 2005-12-08 17:15 cache
drwxrwxr-x 2 kfelkins genome 4096 2005-12-08 17:15 doc
drwxrwxr-x 2 kfelkins genome 4096 2005-12-08 17:15 gems
drwxrwxr-x 2 kfelkins genome 4096 2005-12-08 17:15 specifications
kfelkins@lurch:~/bin$ cd $GEM_HOME/gems
kfelkins@lurch:~/gem-repository/gems$ ls
kfelkins@lurch:~/gem-repository/gems$ echo $GEM_PATH
kfelkins@lurch:~/gem-repository/gems$

Ok, it looks like you no longer have the system gem repository in your
GEM_PATH. Gem can't find its sources gem.

Try adding the original repository to the GEM_PATH. Perhaps something
like this:

export GEM_PATH=/usr/local/lib/ruby/gems/1.8

(you might need to tweek the directory for your local system).

Once you add that line, gems should search both your $GEM_HOME
repository and the GEM_PATH repository. You can add more repositories
to GEM_PATH if you wish.

-- Jim Weirich
 
K

Kelly Dwight Felkins

------=_Part_9948_6600054.1134154950403
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

I think rails can find the gems. Do you know how rails does it?

I'm not certain that rails uses gems *after* an application has been
created. Rails is installed as a collection of gems, but I guess it is
possible that when you create a rails application all of the required
libraries are copied or linked, though I doubt it.

-kelly


Ok, it looks like you no longer have the system gem repository in your
GEM_PATH. Gem can't find its sources gem.

Try adding the original repository to the GEM_PATH. Perhaps something
like this:

export GEM_PATH=3D/usr/local/lib/ruby/gems/1.8

(you might need to tweek the directory for your local system).

Once you add that line, gems should search both your $GEM_HOME
repository and the GEM_PATH repository. You can add more repositories
to GEM_PATH if you wish.

-- Jim Weirich

------=_Part_9948_6600054.1134154950403--
 
J

Jim Weirich

railsinator said:
I think rails can find the gems. Do you know how rails does it?

I'm not certain that rails uses gems *after* an application has been
created. Rails is installed as a collection of gems, but I guess it is
possible that when you create a rails application all of the required
libraries are copied or linked, though I doubt it.

hard to say without knowing more details. Some possibilities are:

(1) Rails comes in non-gem versions, is one of those installed?
(2) GEM_HOME is an environment variable. Although your interactive
shell was messed up, it could be that rails is running in a different
window with its own, properly setup, GEM_HOME value. (Possibly started
before you changed it).


-- Jim Weirich
 
K

Kelly Dwight Felkins

------=_Part_11241_24197802.1134159884488
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Thanks Jim. I'm going to go with your #1. Since this is a debian system, my
guess is rails was installed using apt-get. I also run debian on my persona=
l
systems but I don't use apt-get to install rails -- I use gems.

-Kelly

hard to say without knowing more details. Some possibilities are:

(1) Rails comes in non-gem versions, is one of those installed?
(2) GEM_HOME is an environment variable. Although your interactive
shell was messed up, it could be that rails is running in a different
window with its own, properly setup, GEM_HOME value. (Possibly started
before you changed it).


-- Jim Weirich

------=_Part_11241_24197802.1134159884488--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,780
Messages
2,569,611
Members
45,282
Latest member
RoseannaBa

Latest Threads

Top