Nebulous
Easily read CSV files. Less murderous rage.
Installation
Add this line to your application's Gemfile:
gem 'nebulous'
And then execute:
$ bundle
Or install it yourself as:
$ gem install nebulous
Usage
Nebulous is a bit easier going than other CSV libraries for Ruby. It will parse data that would otherwise fail with Ruby's CSV and supports the common problems that are present in real-world CSV files. Nebulous will also try to intelligently determine the column delimiters and line terminators before parsing so you don't have to. Which makes handling CSV file uploads a breeze when you have no idea what you might get. Let's cover some examples.
Nebulous.process "path/to/file.csv"
=> [{:first_name=>"Meghan", :last_name=>"Koch"},
{:first_name=>"Genoveva", :last_name=>"Dare"}, ...]
Or process within a block in chunks of 10
Nebulous.process "path/to/file.csv", chunk: 10 do |chunk|
p chunk
end
=> [{:first_name=>"Meghan", :last_name=>"Koch"},
{:first_name=>"Genoveva", :last_name=>"Dare"}, ...]
=> [{:first_name=>"Chad", :last_name=>"Anderson"},
{:first_name=>"Arnold", :last_name=>"Yundt"}, ...]
Or provide your own header mapping to normalize columns:
map = {first_name: :col1, last_name: :col2 }
Nebulous.process "path/to/file.csv", mapping: map
=> [{:col1=>"どーもありがとう", :col2=>"ミスター·ロボット"},
{:col1=>"Meghan", :col2=>"Koch"},
{:col1=>"Genoveva", :col2=>"Dare"}]
If you know your CSV file does not contain headers it will return simple Arrays.
Nebulous.process "path/to/file.csv", headers: false
=> [["どーもありがとう", "ミスター·ロボット"],
["Meghan", "Koch"],
["Genoveva", "Dare"]]
Or provide a limit:
Nebulous.process "path/to/file.csv", limit: 1
=> [{:first_name=>"どーもありがとう", :last_name=>"ミスター·ロボット"}]
Contributing
- Fork it ( https://github.com/zachgraves/nebulous/fork )
- Create your feature branch (
git checkout -b feature/my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin feature/my-new-feature
) - Create a new Pull Request targetting
develop