Skip to content

Instantly share code, notes, and snippets.

@kibiz0r
Created March 24, 2011 02:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save kibiz0r/884424 to your computer and use it in GitHub Desktop.
Save kibiz0r/884424 to your computer and use it in GitHub Desktop.
require "csv"
class AwesomeCsvReader
def initialize(importer)
@importer = importer
end
def read
CSV.foreach "large.csv" do |line|
@importer.import line
end
end
end
class AwesomeRecordImporter
def import(datum)
puts "Imported #{datum.inspect}"
end
end
importer = AwesomeRecordImporter.new
reader = AwesomeCsvReader.new importer
reader.read
require "csv"
class AwesomeCsvReader
def read
CSV.read "large.csv"
end
end
class AwesomeRecordImporter
def import(data)
data.each do |datum|
puts "Imported #{datum.inspect}"
end
end
end
reader = AwesomeCsvReader.new
importer = AwesomeRecordImporter.new
importer.import reader.read
require "csv"
class AwesomeCsvReader
def read
CSV.enum_for :foreach, "large.csv"
end
end
class AwesomeRecordImporter
def import(data)
data.each do |datum|
puts "Imported #{datum.inspect}"
end
end
end
reader = AwesomeCsvReader.new
importer = AwesomeRecordImporter.new
importer.import reader.read
def import_data_source
data = [
:good_data,
:bad_data,
:good_data
]
Enumerator.new do |yielder|
data.each do |data|
begin
yielder << data
rescue
end
end
end
end
def import(data)
raise "Error!" if data == :bad_data
puts "Successfully imported #{data}"
end
import_data_source.each do |data|
import data
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment