Cbuilder is an ultralight (< 100 LOC) CSV builder/template handler inspired by dhh's excellent Jbuilder. The goal is a simple DSL for creating CSV files that's better than creating massive custom arrays.
If you're doing any more than 4-5 columns, generating CSV files can be a real pain. God forbid you're not simply outputting the attributes of a simple array, and need helpers or other niceties.
You don't need to re-invent the wheel with CSV. Cbuilder weighs in at less than 100 LOC.
Have you ever found yourself doing this?
Customer Name,Products Purchased, Product Names <% @orders.each do |order|%> <%= order.customer.name %>,<%= products_count(order) %>,<%= product_names(order.products) %>,... <% end %>
What if you could do this instead?
. do |csv| csv.set_collection!(@orders) do |order| csv.col 'Customer Name', order.customer.name csv.col 'Products Purchased', products_count(order) csv.col 'Product Names', product_names(order.products) end end
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install cbuilder
Just drop into your Rails Gemfile and start adding templates with *.csv.cbuilder.
If you'd like the CSV to be downloaded as an attachment, add the following to your controller action:
response.headers["Content-Disposition"] = 'attachment; filename="my_spreadsheet.csv'
- Test Ruby 1.8 support
- Test use as a partial
- Fork it
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Added some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request
Cbuilder was built by Craft Coffee