Gem for exporting/importing ruby objects to flat files vice versa.
ActiveReport is a library to export CSV's out of arrays, hashes, and records and vice versa.
Add this line to your application's Gemfile:
gem "active_report"
And then execute:
$ bundle
Or install it yourself as:
$ gem install active_report
rails g active_report:install
will generate the following active_report.rb
file:
# config/initalizers/active_report.rb
ActiveReport.configure do |config|
# option = default
config.force_encoding = true
config.options = { encoding: "UTF-8" }
end
Export: Convert an array or array of arrays to a CSV.
Options:
@list = [
[1, "Lorem lipsum etc...", true],
[2, "Xorem lipsum etc...", false],
[3, "Porem lipsum etc...", true]
]
ActiveReport::Array.export(@list)
ActiveReport::Array.export(@list, headers: ["ID", "Task", "Completed"], options: { col_sep: ";" })
Import: Convert a CSV into an array or array of arrays.
Options:
ActiveReport::Array.import("sample.csv")
ActiveReport::Array.import("sample.csv", headers: ["ID", "Task", "Completed"], options: { col_sep: ";" })
Export: Convert a hash or an array of hashes to a CSV.
Options:
@list = [
{ id: 1, item: "Lorem lipsum etc...", completed: true},
{ id: 2, item: "Xorem lipsum etc...", completed: false},
{ id: 3, item: "Porem lipsum etc...", completed: true}
]
ActiveReport::Hash.export(@list)
ActiveReport::Hash.export(@list, only: [:id, :item], headers: ["ID", "Task"], options: { col_sep: ";" })
Import: Convert a CSV into an array of hashes.
Options:
ActiveReport::Hash.import("sample.csv")
ActiveReport::Hash.import("sample.csv", except: :completed, headers: ["ID", "Task"], options: { col_sep: ";" })
Export: Convert an ActiveRecord/Relation object(s) to a CSV.
Options:
@list = [
<# ActiveRecord::Relation Object >,
<# ActiveRecord::Relation Object >,
<# ActiveRecord::Relation Object >
]
ActiveReport::Record.export(@list)
ActiveReport::Record.export(@list, only: [:id, :item], headers: ["ID", "Task"], options: { col_sep: ";" })
Import: Create new database records from a CSV.
Options:
ActiveReport::Record.import("sample.csv", model: User)
ActiveReport::Record.import("sample.csv", model: User, except: :completed, headers: ["ID", "Task"], options: { col_sep: ";" })
Array/Hash: Convert the import of a array or hash to proper ruby objects.
ActiveReport::Hash.evaluate.import("sample.csv")
Your contribution is welcome.
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)