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

时间:2011-09-22 17:04:20

标签: ruby rubygems 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

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

require 'rubygems'

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

编辑:发布失败代码的示例。请注意,rubygems返回false并不意味着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 `<main>'
irb(main):005:0> 

1 个答案:

答案 0 :(得分:13)

看起来gem已使用错误的权限创建;有a bug opened for this on 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

以递归方式使宝石中的所有文件都可读。

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