[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

home of the gems?

Kelly Dwight Felkins

12/9/2005 2:12:00 AM

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
6 Answers

Jim Weirich

12/9/2005 4:52:00 AM

0

railsinator wrote:
> 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


--
Posted via http://www.ruby-....


Kelly Dwight Felkins

12/9/2005 6:04:00 PM

0

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


On 12/8/05, Jim Weirich <jim@weirichhouse.org> wrote:
>
> railsinator wrote:
> > 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
>
>
> --
> Posted via http://www.ruby-....
>
>

Jim Weirich

12/9/2005 6:53:00 PM

0

railsinator wrote:
> 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

--
Posted via http://www.ruby-....


Kelly Dwight Felkins

12/9/2005 7:03:00 PM

0

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


On 12/9/05, Jim Weirich <jim@weirichhouse.org> wrote:
>
> railsinator wrote:
> > 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
>
> --
> Posted via http://www.ruby-....
>
>

Jim Weirich

12/9/2005 7:51:00 PM

0

railsinator wrote:
> 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

--
Posted via http://www.ruby-....


Kelly Dwight Felkins

12/9/2005 8:25:00 PM

0

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 personal
systems but I don't use apt-get to install rails -- I use gems.

-Kelly

On 12/9/05, Jim Weirich <jim@weirichhouse.org> wrote:
>
> railsinator wrote:
> > 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
>
> --
> Posted via http://www.ruby-....
>
>