首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rubygems路径问题

Rubygems路径问题
EN

Stack Overflow用户
提问于 2010-05-26 13:27:40
回答 2查看 5.5K关注 0票数 0

我试图运行以下红宝石代码从IRB,但无法要求gmail创业板。

代码语言:javascript
复制
require 'rubygems'
require 'gmail'

gmail = Gmail.new("user", "pass")

这是IRB的输出:

代码语言:javascript
复制
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输出:

代码语言:javascript
复制
>> 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"]

和环境产出:

代码语言:javascript
复制
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

哪颗红宝石:

代码语言:javascript
复制
Johnny-Goodmans-MacBook-Pro:gmail johnnygoodman$ which ruby
/usr/bin/ruby

和.gemrc:

代码语言:javascript
复制
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

这是我的宝石清单:

代码语言:javascript
复制
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端口,并使用高速指令安装了一个新的ruby/rails版本。但是,请注意,在我运行之前,我的哪颗红宝石不符合hivelogic的指示:

代码语言:javascript
复制
Johnny-Goodmans-MacBook-Pro:~ johnnygoodman$ . ~/.profile
Johnny-Goodmans-MacBook-Pro:~ johnnygoodman$ which ruby
/usr/local/bin/ruby

我认为这就是问题所在,但我不知道该读取什么来强制ruby路径始终加载到/usr/local/bin/ruby。它也可能是一条红鲱鱼,因为我根本不知道这些部件是如何合适的。一旦sudo创业板安装不起作用,我基本上就迷路了。

注意,其他宝石也能发挥作用:

代码语言:javascript
复制
Johnny-Goodmans-MacBook-Pro:~ johnnygoodman$ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'mechanize'
=> true

问题:

  1. 当sudo创业板安装不允许您从类创建对象时,接下来要解决的问题是什么?
  2. 如何将创业板的各个部分结合在一起,以解决这些类型的问题?我读过常见问题和文档(http://docs.rubygems.org/read/book/3),但要么错过了它,要么无法分辨出相关的部分。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-27 22:10:56

看来你误会了红宝石是如何装载文件的。有一个包含路径(请查看$:变量)。当您需要某些内容时,ruby将从数组的第一个路径开始,并检查文件是否存在。如果是,则加载它,否则它会移动到包含路径中的下一个目录。

当您需要gmail时,它似乎加载了您自己的gmail.rb。在该文件中执行require "gmail"将发现自己,而不是gem的gmail.rb。

要修复它,您可能应该将您的gmail.rb重命名为其他东西(my_gmail.rb或其他任何东西,只需确保它与任何系统文件不匹配)。

( require 'ruby-gmail'失败,因为ruby创业板不包含这样的文件。您应该使用简单的require 'gmail',但在重命名gmail.rb之前)

票数 1
EN

Stack Overflow用户

发布于 2010-05-26 19:51:13

您的IRB输出似乎已经达到了您需要的程度:

代码语言:javascript
复制
>> require 'gmail'
NameError: uninitialized constant Gmail
        from ./gmail.rb:6

当您需要“Gmail”时,它将拉入您的本地gmail.rb文件--其中包含对Gmail类(?)的引用。这还没有定义。

但是,还不清楚为什么要定义Gmail。如果没有看到gmail.rb中的代码,就很难说出出了什么问题。

我注意到,在您的宝石列表中没有任何名为"gmail“的创业板或类似的内容。

因此,很难说你想要完成什么。您可能是将gems与基本库要求混淆,或者假设Rails常量查找功能是Ruby特性。

如果您能够发布gmail.rb的内容,这将是最有用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2913356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档