gems/csv_builder/README.md
Generate a CSV given a collection and a mapping.
columns = {
'Title' => 'title',
'Comment' => 'comment',
'Author' => -> (post) { post.author.full_name }
'Created At (UTC)' => -> (post) { post.created_at&.strftime('%Y-%m-%d %H:%M:%S') }
}
CsvBuilder.new(@posts, columns).render
When the value of the mapping is a string, a method is called with the given name
on the record (for example: post.title).
When the value of the mapping is a lambda, it is lazily executed.
It's possible to also pass ActiveRecord associations to preload when batching through the collection:
CsvBuilder.new(@posts, columns, [:author, :comments]).render
When the collection is an array or enumerable you can use:
CsvBuilder::SingleBatch.new(@posts, columns).render
A stream builder uses a lazy and more efficient iterator and by default returns up to 100,000 records from the collection.
CsvBuilder::Stream.new(@posts, columns).render(1_000)
Follow the GitLab gems development guidelines.