2012-10-28 43 views
1

安装机械化我在Ubuntu 12.04使用Ruby 1.8.7和rubygem 1.8.15一些问题,当我在红宝石

首先,我在sudo gem install mechanize --no-ri --no-rdoc

它似乎运作良好类型。

Building native extensions. This could take a while... 
Fetching: ntlm-http-0.1.1.gem (100%) 
WARNING: ntlm-http-0.1.1 has an invalid nil value for @cert_chain 
Fetching: webrobots-0.0.13.gem (100%) 
Fetching: unf_ext-0.0.5.gem (100%) 
Building native extensions. This could take a while... 
Fetching: unf-0.0.5.gem (100%) 
Fetching: domain_name-0.5.4.gem (100%) 
Fetching: mechanize-2.5.1.gem (100%) 
Successfully installed nokogiri-1.5.5 
Successfully installed ntlm-http-0.1.1 
Successfully installed webrobots-0.0.13 
Successfully installed unf_ext-0.0.5 
Successfully installed unf-0.0.5 
Successfully installed domain_name-0.5.4 
Successfully installed mechanize-2.5.1 
7 gems installed 

然后我写了我的第一个程序

require 'rubygems' 
require 'mechanize' 

agent = Mechanize.new 

这是行不通的

./mechanize.rb uninitialized constant Mechanize (NameError) 
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in  gem_original_require' 
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require' 
    from mechanize.rb:2 

有人能帮助我吗?

回答

2

将文件重命名为'mechanize-test.rb'或其他内容以避免与库混淆。它看起来像1.8的require行为奇怪。

+0

太棒了!它的工作原理。 – user1668903

+0

它不需要行为不当,但轨道加载类的方式文件名预计是类名,所以当你有mechanize.rb它期望找到它的类名机械化,因此导致未初始化的常量异常 – bjhaid

+0

@bjhaid - 实际上问题是1.8从'.'加载mechanize.rb,而不是由于'LOAD_PATH'问题​​引起的gem文件夹问题。这不是铁轨问题,这里没有铁轨。 – pguardiario