$ ruby aozora2solr.rb list_person_all_extended_utf8.csv > aozora.csv

を実行しますと以下のエラーがでます。
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]

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/12/22 14:05:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:iwadon No.1

回答回数60ベストアンサー獲得回数13

ポイント100pt

エラーメッセージにありますように、25行目に問題があります。

CSV { |csv_out|

この行は何をしたいのでしょうか? そもそも CSV はクラス名なので、この25行目の書き方のようなメソッドとして使うことは出来ません。
もしcsvファイルを作成したいのであれば CSV.openCSV.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

id:yayayai

ありがとうございます!
ああ、この行は何をしたいのでしょうかで、答えが出ましたね。。。
標準出力に文字だす形になるので、
CSV.generateかな。検証してみます

2013/12/15 16:56:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません