本文介绍了为什么relative_require在Ruby 1.8.6上不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在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上不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-24 05:37