randy.j.parker-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2007-May-10 18:06 UTC
Disobedient ''gem env'' Causing Rails "undefined method `gem'' "
I''m setting up on a textdrive shared host, and have installed my gems
to a local directory called ''gems''. I did this by installing
the gems
on my ubuntu 7.04 system and tar''ing up the ''gems'' to
a like-named
directory on the ''gilford'' (FreeBSD 5.3) shared host. (a
trick
required because ''gem update'' or ''gem
install'' busts txd''s memory
limit during a zlib inflate of the gem repository hash - that is,
memory allocation fails for even the smallest of gems)
After setting my GEM_PATH and GEM_HOME so that ''gem query''
reports
_only_ my locally installed gems (as expected), and this test:
[xxx@gilford ~]$ gem list rubygems
*** LOCAL GEMS ***
rubygems-update (0.9.2)
RubyGems Update GEM
reports exactly what I expect, I next try ''gem env'', which
nonetheless
reports a back-rev gem version( ! ):
[xxx@gilford ~/local]$ gem env
Rubygems Environment:
- VERSION: 0.8.11 (0.8.11)
- INSTALLATION DIRECTORY: /users/home/xxx/gems
- GEM PATH:
- /users/home/xxx/gems
- /users/home/xxx/local/lib/ruby/site_ruby/1.8
- REMOTE SOURCES:
- http://gems.rubyforge.org
(note that I have removed the ''gilford'' system''s gem
path altogether,
in desperation. I''m trying to avoid all of txd''s gems, so
that I am
certain that only my local stuff is included)
So I download the rubygems-0.9.2.tgz and stick it in a ''local''
directory, and adjust the two GEM paths above, plus my normal shell
PATH and LD_LIBRARY_PATH to use the ''local'' bins and libs
first. But I
still get ''gem env'' -> 0.8.11
The actual ''gem'' file in the ''local/bin''
directory is simply some Ruby
that does:
require ''rubygems''
Gem.manage_gems
with a few more lines. Surely these lines are run with either
GEM_PATH or the .gemrc path? And I think both of these are right:
''gem query'' proves ''GEM_PATH'' is working,
and the next paragraph
shows .gemrc works as well.
(I also have a consistent .gemrc in my home dir. According to Jim
Weirich''s note from Apr 3 2006, I think I''m doing the right
thing:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/187403
In short: "All gems use GEM_PATH, except for ''gem'', which
uses .gemrc." This behavior is supported by a test in which I add or
subtract ''gilford''s'' gem path from my .gemrc: and as
expected, my
''gem env'' output shows only the lines specified in .gemrc.
The reason I care so much about what ''gem env'' says is because
when I
type "rails -v" I get:
/users/home/xxx/gems/bin/rails:15: undefined method `gem'' for
main:Object (NoMethodError)
which various posts say results from running current ''rails''
with a
back-rev ''gem''.
The shared host ''gilford'' is running Ruby 1.8.4
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
randy.j.parker-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2007-May-10 20:09 UTC
Re: Disobedient ''gem env'' Causing Rails "undefined method `gem'' "
''gemwhich rubygems'' returns ->
/usr/local/lib/ruby/site_ruby/1.8/
rubygems.rb BAD!
But my .gemrc explicitly specifies a gempath of /home/users/xxx/local/
lib/ruby/site_ruby/1.8 , and this directory does in fact have a
different version of ''rubygems.rb''.
So why does ''gemwhich rubygems'' find a file that is not on any
path I
know of?
(''require rubygems'' is supposed to employ the same lookup
algorithm as
''gemwhich'')
Can anyone explain what it is doing?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
randy.j.parker-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2007-May-10 22:23 UTC
Re: Disobedient ''gem env'' Causing Rails "undefined method `gem'' "
''rubygems'' itself is found via a Ruby $LOAD_PATH lookup. As the PickAxe book explains, this can be set by a ''ruby -I xxx'' invocation. But in the case of ''gem'' itself, or of ''rails'', there is no command line ''-I'' option. So the library lookup path is specified by $RUBYLIB. This is the Ruby analog to C''s $LD_LIBRARY_PATH My .bash_profile now contains: export RUBYLIB=$HOME/gems/local/lib/site_ruby/1.8 export GEM_PATH=$HOME/gems export GEM_HOME=$HOME/gems If I want some of txd''s stock (old) gems, I''d add their path as well.kk See http://rubygems.org/read/chapter/15 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---