问题描述
我正在Windows 7上学习Ruby(使用1.8.6版).
I'm learning Ruby (using version 1.8.6) on Windows 7.
当我尝试运行下面的 stock_stats.rb 程序时,出现以下错误:
When I try to run the stock_stats.rb program below, I get the following error:
C:\Users\Will\Desktop\ruby>ruby stock_stats.rb
stock_stats.rb:1: undefined method `require_relative' for main:Object (NoMethodE
rror)
我有三个v.small代码文件:
I have three v.small code files:
stock_stats.rb
require_relative 'csv_reader'
reader = CsvReader.new
ARGV.each do |csv_file_name|
STDERR.puts "Processing #{csv_file_name}"
reader.read_in_csv_data(csv_file_name)
end
puts "Total value = #{reader.total_value_in_stock}"
csv_reader.rb
require 'csv'
require_relative 'book_in_stock'
class CsvReader
def initialize
@books_in_stock = []
end
def read_in_csv_data(csv_file_name)
CSV.foreach(csv_file_name, headers: true) do |row|
@books_in_stock << BookInStock.new(row["ISBN"], row["Amount"])
end
end
# later we'll see how to use inject to sum a collection
def total_value_in_stock
sum = 0.0
@books_in_stock.each {|book| sum += book.price}
sum
end
def number_of_each_isbn
# ...
end
end
book_in_stock.rb
require 'csv'
require_relative 'book_in_stock'
class CsvReader
def initialize
@books_in_stock = []
end
def read_in_csv_data(csv_file_name)
CSV.foreach(csv_file_name, headers: true) do |row|
@books_in_stock << BookInStock.new(row["ISBN"], row["Amount"])
end
end
# later we'll see how to use inject to sum a collection
def total_value_in_stock
sum = 0.0
@books_in_stock.each {|book| sum += book.price}
sum
end
def number_of_each_isbn
# ...
end
end
在此先感谢您的帮助.
推荐答案
在问这个问题的日子里,它提到的是没有require_relative
的Ruby 1.8.6.到目前为止,Ruby 1.8.6已过时,不应再使用.
Back in the days where this question was asked it referred to Ruby 1.8.6 where there was no require_relative
. By now Ruby 1.8.6 is outdated and shouldn't be used anymore.
原始:
根本没有方法名称require_relative
.您也可以在其中使用require
.
There is simply no method name require_relative
. You can use require
there aswell.
require_relative
函数包含在Ruby核心库的扩展项目中,可以在以下位置找到: http ://www.rubyforge.org/projects/extensions
The require_relative
function is included in an extension project to the Ruby core libraries, found here: http://www.rubyforge.org/projects/extensions
您应该可以使用gem install extensions
安装它们.然后在您的代码中在require_relative
之前添加以下行:
You should be able to install them with gem install extensions
.Then in your code add the following line before the require_relative
:
require 'extensions/all'
这篇关于为什么relative_require在Ruby 1.8.6上不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!