2012-06-08 2 views
3

require을 Sinatra 웹 프레임 워크처럼로드하는 데 아무런 문제가 없음을 발견했습니다. 그러나 require을 사용하여 내 자신의 사용자 정의 코드를로드하는 것처럼 보일 수 없습니까?Ruby`require` 호출이 맞춤 코드에서 실패합니다

  1. test1.rb
  2. test2.rb

'test1.rb'의 내용은 다음과 같습니다 :

#!/usr/bin/env ruby 
require 'test2' 

예를 들어

나는 두 개의 파일이 'test2.rb'의 내용은 다음과 같습니다.

class String 
    def vowels 
     self.scan(/[aeiou]/i) 
    end 
end 

은 내가 노력하고 내가 다음과 같은 오류가 다음 ruby test1.rb을 실행하면 ...

그때 웹 서버를로드 shotgun 보석을 사용하려고하면 그때 발견
/Users/<username>/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- test2 (LoadError) 
    from /Users/<username>/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from test1.rb:3:in `<main>' 

내가 다른하지만 ​​더 얻을 자세한 스택 추적 오류 ...

Boot Error 
Something went wrong while loading test1.rb 
LoadError: cannot load such file -- test2 

/Users/<username>/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
/Users/<username>/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
/Users/<username>/Dropbox/Library/Ruby/Passage/test1.rb:3:in `<top (required)>' 
/Users/<username>/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
/Users/<username>/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/shotgun-0.9/lib/shotgun/loader.rb:114:in `inner_app' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/shotgun-0.9/lib/shotgun/loader.rb:102:in `assemble_app' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/shotgun-0.9/lib/shotgun/loader.rb:86:in `proceed_as_child' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/shotgun-0.9/lib/shotgun/loader.rb:31:in `call!' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/shotgun-0.9/lib/shotgun/loader.rb:18:in `call' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/shotgun-0.9/lib/shotgun/favicon.rb:12:in `call' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/shotgun-0.9/lib/shotgun/static.rb:14:in `call' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/builder.rb:134:in `call' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/connection.rb:80:in `block in pre_process' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/connection.rb:78:in `catch' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/connection.rb:78:in `pre_process' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/connection.rb:53:in `process' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/connection.rb:38:in `receive_data' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/backends/base.rb:61:in `start' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/server.rb:159:in `start' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler/thin.rb:13:in `run' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/gems/shotgun-0.9/bin/shotgun:156:in `<top (required)>' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/bin/shotgun:19:in `load' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/bin/shotgun:19:in `<main>' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/bin/ruby_noexec_wrapper:14:in `eval' 
/Users/<username>/.rvm/gems/ruby-1.9.3-p125/bin/ruby_noexec_wrapper:14:in `<main>' 

무엇이 문제인지 모르겠습니다.

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

감사합니다.

답변

8

현재 디렉토리 (주 루비 파일과 관련 있음)는로드 경로 (require이 보이는 경로 집합)의 일부가 아닙니다. 따라서로드 경로에 추가하려면 (ruby -I. test1.rb과 같이 ruby를 호출하는 것이 가장 좋음) require "./test2.rb"을 사용하거나 require_relative "test2.rb"을 사용하여 파일의 디렉토리와 관련된 파일이 필요합니다.

관련 문제