1

我正在尝试运行这段 Ruby 代码,但出现错误,这似乎是什么问题?

require 'restaurant'

class Guide
  def initialize(path=nil)
    #locate the restaurant text file at path
    Restaurant.filepath=path
    if Restaurant.file_exists
      puts "Found restaurant file"
      #or create a new file
    elsif Restaurant.create_file
      puts "Created restaurant file"
      #exit if create fails
    else 
      puts "\n\nExiting\n\n"
      exit!
    end
  end
end

这是我得到的错误:

/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- restaurant (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from guide.rb:1:in `<main>'
4

2 回答 2

1

当您需要来自 ruby​​ 的文件时,它会在全局变量的所有目录中查找该文件$LOAD_PATH(也缩写为$:)。这通常包括当前目录(称为./),因此您需要明确告诉 Ruby 去那里查看:

require './restaurant'

另一种选择是使用require_relative

require_relative 'restaurant'

如果您愿意,还可以将当前目录附加到$LOAD_PATH.

$: << File.expand_path(__FILE__)
require 'restaurant'

附带说明一下,在 Ruby 1.9.2 之前,当前目录实际上位于 中$LOAD_PATH,另请参阅为什么 Ruby 1.9.2 删除“。” 来自 LOAD_PATH,还有什么替代方法?

于 2013-11-13T16:24:48.417 回答
0

错误消息在这里不仅仅是描述性的。Ruby 根本找不到您试图要求的“restaurant.rb”文件。

于 2013-11-13T16:13:08.210 回答