2011-11-15 5 views
1

저는 Ruby 1.9.2와 Rails 3.0.7을 사용하고 있습니다. 나는 cron 작업을 사용하여 매 15 분 간격으로 하나의 CSV 파일을 생성하는 루비 백엔드 스크립트를 작성했습니다.CSV 파일을 구문 분석 할 때 빈 값을 반환 할 때 해결 방법은 무엇입니까?

백 엔드 루비 스크립트를 성공적으로 만들어 위의 스크립트 CSV 파일 (count.csv)에서

CSV.open("count.csv", 'wb',:col_sep=>',') do |csv| 
# header row 
    csv << ['id', 'count'] 
    models = Model.all 
    models.each do |obj| 
     csv << [ obj.id, obj.get_count] 
    end 
end 

. Rails 앱에서

CSV.foreach("count.csv", :quote_char => '"', :col_sep =>',', :row_sep =>:auto, :headers => true) do |row| 
    count = row["count"].to_i if row["id"].to_i == @id 
end 

해당 CSV 파일에서 카운트 값을 파싱해야합니다. 하지만 문제는 때 cron 실행 시간, 그 CSV 파일에서 카운트 값을 얻을 수없는 모든 레코드에 대해 0을 반환하고 실행 완료 후 계산의 가치를 얻을 수 있습니다. 하지만 나는 cron 실행 중지 또는 시작 여부를 카운트 값을 항상 필요, 어느 누구도 해결하거나 제안을 도와 드릴까요? 미리 감사드립니다.

+0

코드가 괜찮습니다. '@ id'가 초기화 되었습니까? –

+0

@ 대니얼 - 예. 초기화했습니다. 문제는 루비 스크립트 실행 중에 발생합니다. 레일 사이드에서 나는 모든 데이터에 대해 0을 얻었다. 그 일은 어때? 어떤 추측인가? – prabu

+0

Rails에서 단순히'obj.get_count'를 호출하는 것과는 대조되는 이유는 무엇입니까? –

답변

1
models = Model.all 
models.each do |obj| 
    csv_string << [ obj.id, obj.get_count] 
end 

CSV.open("count.csv", 'wb',:col_sep=>',') do |csv| 
# header row 
csv << ['id', 'count'] 
csv << csv_string 
end 
관련 문제