= CSV Builder
The CSV Builder Rails plugin provides a simple templating system for serving
dynamically generated CSV files from your application.
== Requirements
CSV Builder requires Rails v2.1.
It also depends upon the FasterCSV gem http://fastercsv.rubyforge.org,
which you can install with
$ sudo gem install fastercsv
Encoding conversions are done with Iconv, so make sure you have it on your
development/production machine.
== Install
=== Install as gem (recommended)
Install as a gem:
$ sudo gem install mreinsch-csv_builder
Then add the gem dependency in your config:
# config/environment.rb
config.gem "mreinsch-csv_builder", :source => "http://gems.github.com", :lib => "csv_builder"
=== Install as plugin
To install as a plugin, use:
$ ./script/plugin install git://github.com/mreinsch/csv_builder.git
== Example
CSV template files are suffixed with '.csv.csvbuilder', for example
'index.csv.csvbuilder'
Add rows to your CSV file in the template by pushing arrays of columns into the
csv object.
# First row
csv << [ 'cell 1', 'cell 2' ]
# Second row
csv << [ 'another cell value', 'and another' ]
# etc...
You can set the default filename for that a browser will use for 'save as' by
setting @filename instance variable in your controller's action method
e.g.
@filename = 'report.csv'
You can set the input encoding and output encoding by setting
@input_encoding and @output_encoding instance variables.
These default to 'UTF-8' and 'LATIN1' respectively. e.g.
@output_encoding = 'UTF-8'
You can set @csv_options instance variable to define options for
FasterCSV generator. For example:
@csv_options = { :force_quotes => true, :col_sep => ';' }
You can also attach a csv file to mail sent out by your application by
including a snippet like the following in your mailer method
attachment "text/csv" do |attachment|
attachment.body = render(:file => 'example/index.csv.csvbuilder')
attachment.filename = 'report.csv'
end
Copyright (c) 2008 Econsultancy.com and 2009 Vidmantas Kabošis, released under
the MIT license.