2013-01-10 29 views
10

Lệnh chính xác trong lệnh Ruby hoạt động như thế nào? Tôi đã thử nghiệm nó với hai tệp sau nằm trong cùng một thư mục.yêu cầu không thể tìm thấy tệp .rb có cùng thư mục

test.rb

require 'requirements' 
square(2) 

requirements.rb

def square(x) 
    x*x 
end 

Nhưng khi tôi chạy ruby ​​test.rb trong khi tôi đang ở trong cùng thư mục với các tập tin "test.rb" và " requirements.rb ", tôi gặp lỗi:

/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- requirements (LoadError) 
from /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
from test.rb:1:in `<main>' 

mà tôi nghĩ có nghĩa là không thể tìm thấy tệp yêu cầu.rb. Nhưng nó nằm trong cùng thư mục với test.rb! Làm thế nào để sửa lỗi này?

Cảm ơn nhiều trước. Tôi xin lỗi vì những câu hỏi noob như vậy.

Trả lời

32

IIRC, ruby ​​1.9 không bao gồm dir hiện tại ('.') Đến LOAD_PATH. Bạn có thể làm một trong những:

# specify relative path 
require './test1' 

# use relative method 
require_relative 'test1' 

# add current dir to LOAD_PATH 
$LOAD_PATH.unshift '.' 
require 'test1' 
+0

Cảm ơn, điều này có ý nghĩa. – User314159

3

tôi cũng chỉ mới bắt đầu học cách ruby ​​hoạt động, vì vậy tôi không hoàn toàn chắc chắn nếu điều này giúp. Nhưng hãy thử require_relative thay vì yêu cầu và tôi nghĩ rằng nó sẽ làm việc.
Afaik yêu cầu tìm kiếm trong thư viện ruby.

Các vấn đề liên quan