を実行しますと以下のエラーがでます。
aozora2solr.rb:25: undefined method `CSV' for main:Object (NoMethodError)
ソースは、以下になります。
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'csv'
rows = CSV.read(ARGV[0])
header = [
"id",
"bid",
"title",
"aid",
"family_name",
"first_name",
"subtitle",
"orgtitle",
"orgbook",
"publisher",
"card_url",
"text_url",
"html_url",
"copyright"
]
CSV { |csv_out|
csv_out << header
rows.each do |row|
newrow = []
newrow << "#{row[0]}-#{row[14]}"
newrow << row[0]
newrow << row[1]
newrow << row[14]
newrow << row[15]
newrow << row[16]
newrow << row[4]
newrow << row[6]
newrow << row[27]
newrow << row[28]
newrow << row[13]
newrow << row[45]
newrow << row[50]
newrow << ((row[10] == "あり") ? "true" : "false")
csv_out << newrow
end
}
rbに食わせているcsvは以下のものです。
http://www.aozora.gr.jp/index_pages/list_person_all_extended_utf8.zip
不適切な点を解説していただきたいです。
どうぞよろしくお願い致します。
環境:ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-linux]
エラーメッセージにありますように、25行目に問題があります。
CSV { |csv_out|
この行は何をしたいのでしょうか? そもそも CSV
はクラス名なので、この25行目の書き方のようなメソッドとして使うことは出来ません。
もしcsvファイルを作成したいのであれば CSV.open
や CSV.generate
メソッドを使います。
singleton method CSV.generate
http://docs.ruby-lang.org/ja/1.8.7/method/CSV/s/generate.html
singleton method CSV.open
http://docs.ruby-lang.org/ja/1.8.7/method/CSV/s/open.html
ありがとうございます!
2013/12/15 16:56:42ああ、この行は何をしたいのでしょうかで、答えが出ましたね。。。
標準出力に文字だす形になるので、
CSV.generateかな。検証してみます