2011-09-22 4 views
4

로봇 보석이 필요한 말미잘 보석을 사용하여 크롤러를 작성하려고합니다. 어떤 이유로 든 로봇에는 절대 포함되지 않습니다. 내 환경 정보는 다음과 같습니다.Ruby gem 환경 문제 - LoadError :로드 할 파일이 없습니다.

$ 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를 반환하고, 상황에 도움이되지 않습니다. 어떤 아이디어?

EDIT : 실패한 코드의 게시 예. 루비 젬이 false를 반환한다고해서 루비 젬이로드 될 수 있다는 것을 의미하지는 않습니다. 루비 젬은 이미로드되어 있습니다. 이 게시물을 참조 : 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> 
+0

첫 번째 제안은 RVM을 사용하는 것이지만 문제를 해결하지는 못할 것입니다. 나는 모른다. 죄송합니다! – ZMorek

+0

실패한 코드를 게시 할 수 있습니까? '루비 보석'과 '로봇'이 이미 필요합니까? – rdvdijk

+0

실패한 코드를 게시했습니다. require 'rubygems'는 이미 포함되어 있기 때문에 실제로 실패하지 않습니다. 자세한 내용은 내가 언급 한 게시물을 참조하십시오. – rybosome

답변

13

; 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 또는 이와 유사한 로컬 설치를 사용하는 사용자는 영향을받지 않습니다.

+1

당신은 생명의 은인입니다. 나는 할 수만 있다면 이것을 한 번 이상 upvote 할 것입니다. 너무 고맙습니다.이게 문제를 완전히 고쳤습니다. – rybosome

관련 문제