2012-09-04 1 views
1

Sinatra 응용 프로그램의 기본 응용 프로그램 파일 (tinyclone.rb) 맨 위에이 해시가 사용되어 여러 개의 보석과 하나의 파일 'dirtywords가 필요합니다. rb. ' 더러운 단어 파일은 tinyclone.rb 파일과 같은 디렉토리에 있습니다.Ruby : 주 응용 프로그램 파일과 같은 디렉터리에있는 파일이 IRB에로드되지 않습니다.

%w(rubygems data_mapper sinatra haml dm-core dm-timestamps dm-types uri restclient xmlsimple dirty_words).each { |lib| require lib} 

내가 IRB

require '/Users/mm/sites/cloning/tinyclone.rb' 

에서 tinyclone.rb 파일을로드 할 때 dirty_words에 대한

cannot load such file -- dirty_words 
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
    from /Users/mm/sites/cloning/tinyclone.rb:1:in `block in <top (required)>' 
    from /Users/mm/sites/cloning/tinyclone.rb:1:in `each' 
    from /Users/mm/sites/cloning/tinyclone.rb:1:in `<top (required)>' 
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from (irb):1 
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/bin/irb:16:in `<main>' 

할 수있는 모든 사용자 파일을 제외하고는, 해시에서 해당 파일의 모든/보석을로드 하나의 파일이 제대로 요구되지 않는 이유를 설명하십시오.

답변

1

Ruby 1.9에는 검색 경로에 현재 디렉토리가 포함되어 있지 않습니다.

# Ruby 1.9 only: 
require_relative 'dirty_words' 

# Ruby 1.9 and 1.8 compatible: 
require File.expand_path('dirty_words', File.dirname(__FILE__)) 

# Both options above imply that you separate `dirty_words` from the list of libs which 
# are present in $LOAD_PATH, and require it separately. Here's another option which 
# should allow you to keep require iteration as it is, though it's considered dirty: 
$LOAD_PATH << File.dirname(__FILE__) 
:

는이 문제를 해결하기위한 몇 가지 옵션이 있습니다