Проблема среды Ruby gem - LoadError: нет такого файла для загрузки - роботы - PullRequest
4 голосов
/ 22 сентября 2011

Я пытаюсь написать сканер, используя камень анемона, для которого требуется камень роботов.По какой-то причине роботы абсолютно не будут включать.Вот некоторая информация о моей среде:

$ 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 Ответ

13 голосов
/ 23 сентября 2011

Похоже, камень был создан с неправильными разрешениями; ошибка открыта для этого на 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 установлены как локальный пользователь, не будет затронут этим.

...