Это код 3-го дня раздела Ruby 7 языков программирования за 7 недель.Я не могу заставить его выводить что-либо, если я не пишу m.read сразу после m = RubyCsv.new
Разве метод инициализации не позаботится об этом?
Для проверки вы можете использовать простой файл rubycsv.txt, содержащий
один, два
1, 2
А вот код рубина:
module ActsAsCsv
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def acts_as_csv
include InstanceMethods
end
end
module InstanceMethods
def read
@csv_contents = []
filename = 'rubycsv.txt'
file = File.new(filename)
@headers = file.gets.chomp.split(', ')
file.each do |row|
@csv_contents << row.chomp.split(', ')
end
end
attr_accessor :headers, :csv_contents
def initalize
read
end
end
end
class RubyCsv
include ActsAsCsv
acts_as_csv
end
m = RubyCsv.new
**m.read** #this shouldn't be necessary according to the book
puts m.headers.inspect
puts m.csv_contents.inspect