Rubygems路径问题
我想从IRB运行以下ruby代码,但无法要求使用gmail gem。Rubygems路径问题
require 'rubygems'
require 'gmail'
gmail = Gmail.new("user", "pass")
这里的IRB输出:
Johnny-Goodmans-MacBook-Pro:gmail johnnygoodman$ irb
>> require 'rubygems'
=> false
>> require 'gmail'
NameError: uninitialized constant Gmail
from ./gmail.rb:6
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
from (irb):2
这里是Gem.path输出:
>> Gem.path
=> ["/Users/johnnygoodman/.gem/ruby/1.8", "/Library/Ruby/Gems/1.8", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8"]
与环境输出:
Johnny-Goodmans-MacBook-Pro:gmail johnnygoodman$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-10
- GEM PATHS:
- /Library/Ruby/Gems/1.8
- /Users/johnnygoodman/.gem/ruby/1.8
- /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- :sources => ["http://rubygems.org/", "http://gems.github.com"]
- REMOTE SOURCES:
- http://rubygems.org/
- http://gems.github.com
和红宝石:
Johnny-Goodmans-MacBook-Pro:gmail johnnygoodman$ which ruby
/usr/bin/ruby
而且.gemrc:
Johnny-Goodmans-MacBook-Pro:~ johnnygoodman$ cat .gemrc
---
:sources:
- http://rubygems.org/
- http://gems.github.com
:backtrace: false
:benchmark: false
:verbose: true
:update_sources: true
:bulk_threshold: 1000
这里是我的gemlist:
Johnny-Goodmans-MacBook-Pro:~ johnnygoodman$ gem list
*** LOCAL GEMS ***
actionmailer (2.3.8, 2.3.5, 2.2.2, 1.3.6)
actionpack (2.3.8, 2.3.5, 2.2.2, 1.13.6)
actionwebservice (1.2.6)
activerecord (2.3.8, 2.3.5, 2.2.2, 1.15.6)
activeresource (2.3.8, 2.3.5, 2.2.2)
activesupport (2.3.8, 2.3.5, 2.2.2, 1.4.4)
acts_as_ferret (0.4.4, 0.4.3)
Ascii85 (1.0.0)
autotest (4.2.10, 4.2.9)
autotest-fsevent (0.2.2, 0.1.1)
autotest-growl (0.2.4, 0.2.0)
autotest-rails (4.1.0)
bigdecimal-segfault-fix (1.0.1)
capistrano (2.5.18, 2.5.11, 2.5.2)
cgi_multipart_eof_fix (2.5.0)
cheat (1.2.1)
chronic (0.2.3)
configuration (1.1.0)
daemons (1.0.10)
dnssd (1.3.1, 0.6.0)
fastthread (1.0.7, 1.0.1)
fcgi (0.8.8, 0.8.7)
ferret (0.11.6)
gem_plugin (0.2.3)
gemcutter (0.5.0, 0.4.1)
heroku (1.9.9, 1.8.5)
highline (1.5.2, 1.5.1, 1.5.0)
hoe (2.6.0, 2.5.0)
hpricot (0.8.2, 0.6.164)
json_pure (1.4.3, 1.2.3, 1.2.2)
launchy (0.3.5)
libxml-ruby (1.1.4, 1.1.3, 1.1.2)
mail (2.2.1)
mechanize (1.0.0, 0.9.3)
mime-types (1.16)
mongrel (1.1.5)
mysql (2.8.1)
needle (1.3.0)
net-scp (1.0.2, 1.0.1)
net-sftp (2.0.4, 2.0.1, 1.1.1)
net-ssh (2.0.22, 2.0.21, 2.0.17, 2.0.4, 1.1.4)
net-ssh-gateway (1.0.1, 1.0.0)
nokogiri (1.4.2, 1.4.1)
passenger (2.2.11, 2.2.9)
pdf-reader (0.8.5, 0.8.4, 0.8.3)
polyglot (0.3.1)
pony (1.0, 0.9, 0.6)
rack (1.1.0, 1.0.1)
rails (2.3.8, 2.3.5, 2.2.2, 1.2.6)
rake (0.8.7, 0.8.3)
RedCloth (4.2.3, 4.1.1)
rest-client (1.4.2, 1.3.1)
rspec (1.3.0)
rspec-rails (1.3.2)
ruby-gmail (0.2.1, 0.0.8)
ruby-openid (2.1.7, 2.1.2)
ruby-yadis (0.3.4)
rubyforge (2.0.4)
rubygems-update (1.3.7, 1.3.6, 1.3.5, 1.3.1)
rubynode (0.1.5)
scrapi (1.2.0)
shared-mime-info (0.1)
sqlite3-ruby (1.2.5, 1.2.4)
sys-uname (0.8.4)
termios (0.9.4)
tidy (1.1.2)
tmail (1.2.7.1)
treetop (1.4.5)
xmpp4r (0.5, 0.4)
ZenTest (4.3.1)
我已经卸载了MAC端口与使用hivelogic instructions安装新的Ruby/Rails版本。但是,请注意,直到我跑我这红宝石不匹配hivelogic的说明:
Johnny-Goodmans-MacBook-Pro:~ johnnygoodman$ . ~/.profile
Johnny-Goodmans-MacBook-Pro:~ johnnygoodman$ which ruby
/usr/local/bin/ruby
我觉得这是问题,但我不知道读迫使红宝石路总是加载到/ usr /本地什么/斌/红宝石。它也可能是一条红色的鲱鱼,因为我根本不知道这些部分是否合适。只要sudo gem安装不起作用,我基本上就会丢失。
注意其他宝石做的工作:
Johnny-Goodmans-MacBook-Pro:~ johnnygoodman$ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'mechanize'
=> true
问题:
当sudo的创业板安装不允许您创建一个从类的对象,什么是侦探的下一步解决这个问题?
创业板的各个部分如何适用于解决这些类型的问题?我已阅读常见问题解答和文档(http://docs.rubygems.org/read/book/3),但无论是错过了还是无法挑选相关部分。
看起来像你有一些误解如何红宝石加载文件。有一个包含路径(查看$:
变量)。当你需要的时候,ruby将从数组的第一个路径开始,并检查文件是否在那里。如果是,则加载它,否则它将转到包含路径中的下一个目录。
当你需要gmail
,它看起来像它加载自己的gmail.rb
。在该文件中执行require "gmail"
将发现它自己,而不是gem的gmail.rb。
要修复它,你应该重新命名你的gmail.rb
其他东西(my_gmail.rb
,或其他任何东西,只要确保它与任何系统文件都不匹配)。
(该require 'ruby-gmail'
失败,因为红宝石Gmail的宝石不包含这样的文件,你应该使用简单require 'gmail'
,但在此之前重命名gmail.rb)
你IRB输出似乎是约至于你需要去:
>> require 'gmail'
NameError: uninitialized constant Gmail
from ./gmail.rb:6
当你需要的Gmail“这是拉动当地gmail.rb文件 - 在其中有一个参考到未定义的Gmail类(?)。
不清楚为什么你会期望定义Gmail。没有看到gmail.rb中的代码,很难说出了什么问题。
我注意到,在你的宝石名单中没有任何称为“gmail”或任何类似的宝石。
因此,很难说出你想要完成什么。也许你正在将宝石与基本的库需求混淆在一起,或者假设Rails的常量查找功能是Ruby特性。
最有用的是,如果你可以发布gmail.rb的内容。
我试图让将要在我的宝石宝石列表是ruby-gmail(0.2.1,0.0.8)。我遵循了gem文档http://github.com/dcparker/ruby-gmail的示例代码部分。 这里的gmail.rb: 需要的Gmail' 的Gmail = Gmail.new(用户名,密码) #...做的事情...... gmail.logout 我希望的结果是关于不定义我的用户和密码的错误,但它卖给我我不能初始化常量。 根据你上面的文章,我假设我的要求'gmail'在本地dir中调用gmail,这与要求gem和错误无关。 – johnnygoodman 2010-05-26 20:17:33
我翻转到Ubuntu linux尝试同样的事情,没有一个gmail.rb文件在本地运行irb会话的目录。 约翰尼@约翰尼膝上型:〜$ IRB IRB(主):001:0>需要 '的rubygems' =>真 IRB(主):002:0>需要 '红宝石的Gmail' LoadError:没有这样的加载文件 - ruby-gmail \t from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in'gem_original_require' \t from /usr/local/lib/site_ruby/1.8/rubygems/ custom_require.rb:31:'require' \t from(irb):2 我在从随机目录运行irb的mac中获得相同的结果。不需要'gmail'让我访问Gmail类吗? – johnnygoodman 2010-05-26 20:44:13
@johnnygoodman你有没有找到解决这个问题? – keypulsations 2013-08-03 20:53:48