Ruby gem环境问题 – LoadError:没有这样的文件加载 – 机器人

我正在尝试使用海葵gem编写爬行器,这需要机器人gem。 无论出于何种原因,机器人绝对不会包括。 这是我的一些环境信息:

$ gem list -d robots *** LOCAL GEMS *** robots (0.10.1) Author: Kyle Maxwell Homepage: http://github.com/fizx/robots Installed at: /usr/local/lib/ruby/gems/1.9.1 Simple robots.txt parser $ gem env RubyGems Environment: - RUBYGEMS VERSION: 1.8.10 - RUBY VERSION: 1.9.2 (2011-02-18 patchlevel 180) [x86_64-darwin10.7.0] - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.9.1 - RUBY EXECUTABLE: /usr/local/bin/ruby - EXECUTABLE DIRECTORY: /usr/local/bin - RUBYGEMS PLATFORMS: - ruby - x86_64-darwin-10 - GEM PATHS: - /usr/local/lib/ruby/gems/1.9.1 - /Users/ryan/.gem/ruby/1.9.1 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - http://rubygems.org/ $ gem which robots /usr/local/lib/ruby/gems/1.9.1/gems/robots-0.10.1/lib/robots.rb 

有任何想法吗? 所有其他gem正确加载,我以前从未遇到过这个问题。 请注意,我使用的是ruby版本1.9,因此隐式需要rubygems。 添加

 require 'rubygems' 

…脚本的前面返回false,因为文件已经包含在内,并没有帮助。 有任何想法吗?

编辑:发布失败代码的示例。 请注意,返回false的rubygems并不意味着rubygems无法加载 – 而是已经加载了它。 见这篇文章: http : //www.ruby-forum.com/topic/157442

 $ irb irb(main):001:0> require 'rubygems' => false irb(main):002:0> require 'active_record' => true irb(main):003:0> require 'mechanize' => true irb(main):004:0> require 'robots' LoadError: no such file to load -- robots from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' from (irb):4 from /usr/local/bin/irb:12:in `' irb(main):005:0> 

看起来像是用错误的权限创建了gem; 在github上为此打开了一个错误 。

使用更改权限

 sudo chmod a+r /usr/local/lib/ruby/gems/1.9.1/gems/robots-0.10.1/lib/robots.rb 

应该修复它,但要注意其他权限问题。 你可能会更好

 sudo chmod -R a+r /usr/local/lib/ruby/gems/1.9.1/gems/robots-0.10.1 

递归地使gem中的所有文件都可读。

robots.rb文件(以及其他一些文件)正在使用权限-rw-rw----进行安装,因此任何使用本地安装的rvm或类似地方安装gems作为本地用户的人都不会受到这个。