人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

$ 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]

●質問者: FujiiRock
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● いわどん
●100ポイント

エラーメッセージにありますように、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


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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ