【问题标题】:ruby: irb gives NameError attempting to use mechanize gem (ubuntu)ruby: irb 给出 NameError 试图使用 mechanize gem (ubuntu)
【发布时间】:2010-08-06 06:29:54
【问题描述】:

在我的 ubuntu 机器上,当我尝试使用 mechanize gem 时,irb (ruby) 会出现 NameError:

$ irb
irb(main):001:0> require 'mechanize'
=> true
irb(main):002:0> Mechanize.new
NameError: uninitialized constant Mechanize
    from (irb):2
    from :0

gem env 显示:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /var/lib/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :gempath => ["/var/lib/gems/1.8", "/usr/lib/ruby/gems/1.8"]
  - REMOTE SOURCES:
     - http://rubygems.org/

gem list 显示它已安装:

$ gem list mech
*** LOCAL GEMS ***
mechanize (1.0.0)

它在文件系统的两个路径中:

$ ls -1 /var/lib/gems/1.8/gems/ |grep mech
mechanize-1.0.0

$ ls -1 /usr/lib/ruby/gems/1.8/gems |grep mech
mechanize-1.0.0

RubyGems 是最新的:

$ gem update --system
Updating RubyGems
Nothing to update

# gem list rubygems
*** LOCAL GEMS ***
rubygems-update (1.3.7)

我有一个最新的红宝石:

ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]

这是我拥有的 ubuntu gems 包(请注意,我安装了 ruby​​gems-update 并运行了 update_rubygems):

# dpkg -l rubygems*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name               Version            Description
+++-==================-==================-====================================================
ii  rubygems           1.3.5-1ubuntu2     package management framework for Ruby libraries/appl
ii  rubygems-doc       1.3.5-1ubuntu2     package management framework for Ruby libraries/appl
ii  rubygems1.8        1.3.5-1ubuntu2     package management framework for Ruby libraries/appl

【问题讨论】:

    标签: ruby mechanize gem nameerror


    【解决方案1】:

    尝试使用

    创建类
    WWW::Mechanize.new
    

    【讨论】:

    • 那行得通。为什么?我该怎么做才能避免输入完整路径?
    • 你可以在require之后调用"include WWW"来包含命名空间
    • 为什么我的服务器需要这个(“include WWW”),而我的本地机器(Mac OS X 10.6.4,ruby 1.8.7)不需要? mechanize 主页上的示例都没有这一行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多