Итак, я пишу простую Ruby-программу, по сути, простую ORM.В моем методе «delete» я написал следующее:
file = "/Users/john/Projects/csv-orm/20180922-test.csv"
def delete id
counter = 0
csv = []
CSV.foreach(file) do |row|
counter += 1
if counter != id
csv << row
end
end
counter = 0
CSV.foreach(file, "w") do |row|
row = csv[counter]
end
end
delete 2
... и я запускаю его в сеансе irb на моем терминале (Mac OS X 10.13, ruby 2.5.1p57 (2018-03-29 ревизия 63029) [x86_64-darwin17]) для проверки (например, путем вставки в приведенном выше коде, а затем попытки delete 2
, где число 2
- это аргумент, передаваемый для параметра id), и я получаю следующую ошибку:
Traceback (most recent call last):
4: from /Users/apickle/.rvm/rubies/ruby-2.5.1/bin/irb:11:in `<main>'
3: from (irb):23
2: from (irb):19:in `delete'
1: from /Users/apickle/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/csv.rb:1139:in `foreach'
ArgumentError (wrong number of arguments (given 2, expected 1))
Просто, чтобы убрать его с дороги, я попытался протестировать его в только что завершившемся и вновь открытом сеансе irb, и я набираю require "csv"
, когда яНачни это.Я не уверен, что делать.: /
РЕДАКТИРОВАТЬ: я переименовал функцию в destroy
и flfllgpt
, и я получил тот же результат - и я сделал простую функцию, которая принимает одно целое число с именем id
и puts
s это.Эта функция работает.Похоже, это как-то связано с вызовами CSV ... когда я комментирую эти блоки, это мне не бросается.Но я использовал их и раньше!