2012-05-23 1 views
2

루비 스크립트에서, IRB에서 작동 나는 문제없이 보석을 만들고 설치할 수 있습니다.사용자 정의 보석은하지 나는 다음과 같은 파일 구조를 기반으로 사용자 정의 보석이

은 또한 IRB에서 작동 :

>> require 'searchcommon' 

=> true 

을하지만,이 보석을 필요로하는 스크립트가 있습니다. 다음과 같이 스크립트는 보석이 포함

#!/usr/local/bin/ruby 
require 'rubygems' 
require 'searchcommon' 

내가지고있어 오류는 다음과 같은 스택 추적을 던졌습니다 :

/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- scommon (LoadError) 
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require' 
    from /usr/local/lib/ruby/gems/1.8/gems/searchcommon-0.0.0/lib/commonfiles/rbbi.rb:1 
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require' 
    from /usr/local/lib/ruby/gems/1.8/gems/searchcommon-0.0.0/lib/searchcommon.rb:1 
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:60:in `gem_original_require' 
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:60:in `require' 
    from ./mapper.rb:3 

에러가 발생한 라인이 내부 " 'commonfiles/rbbi을'필요"입니다 LIB/commonfiles/searchcommon.rb

인이 오류가 rbbi.rb 내의 라인도 동일한 폴더에 존재 " 'scommon을"필요 ".

나는 왜 IRB와 함께 잘 사용할 수있을 때 스크립트에서 작동하지 않는지 이해할 수 없다.

나는 this question on SO을 보았지만 동일한 문제를 해결하지 못했습니다.

도움을 주시면 감사하겠습니다.

편집 : 혼란스러운 파일 이름을 제거하고 바꿉니다.

+0

당신은 스크립트에서'searchcommon'을, 에러에서'search_common'을 사용하고 있습니다. 그래서 어떤가? –

+0

'searchcommon'은 보석의 이름입니다. 'search_common'은 'rbbi.rb'와 같은 파일에서 사용하는 내부 라이브러리 파일입니다. – Nikhil

+0

혼란을 피하기 위해 파일 이름을 변경했습니다. – Nikhil

답변

3

scommon을로드하려고하는데 해당 파일이로드 경로에 있지 않습니다. '전체'경로를 사용할 수 있습니다. require 'commenfiles/scommon'

파일의 디렉토리가로드 경로의 일부가 아니기 때문에 이러한 상황이 발생합니다.

+0

고맙습니다! 그것은 그것을 고쳤다. 나는 '어디서나'전체 경로를 사용했다. require_relative에 대한 '메소드 누락'오류가 있지만 루비 1.8.7을 사용하고 있기 때문에 의심 스럽습니다. 다시 한번 감사드립니다. – Nikhil

+0

예, require_relative> = 1.9.2입니다. –