to_csv_rails 0.1 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +61 -0
- data/lib/to_csv_rails.rb +8 -1
- data/lib/to_csv_rails/version.rb +1 -1
- data/test/test_csv.rb +5 -5
- metadata +3 -3
data/README.md
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
to\_csv\_rails
|
2
|
+
============
|
3
|
+
|
4
|
+
to\_csv\_rails implements a to_csv method on your Arrays. It makes exporting records to csv a simple task, even when using responders.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Simply add this to your Gemfile:
|
9
|
+
|
10
|
+
gem 'to_csv_rails'
|
11
|
+
|
12
|
+
Them run:
|
13
|
+
|
14
|
+
bundle install
|
15
|
+
|
16
|
+
## Usage
|
17
|
+
|
18
|
+
Considering that you have a model called User. Here are some examples.
|
19
|
+
|
20
|
+
### Exporting all fields
|
21
|
+
|
22
|
+
User.all.to_csv
|
23
|
+
|
24
|
+
### Exporting only id and name
|
25
|
+
|
26
|
+
User.all.to_csv(:only => [:id, :name])
|
27
|
+
|
28
|
+
### Exporting everything except id
|
29
|
+
|
30
|
+
User.all.to_csv(:except => [:id])
|
31
|
+
|
32
|
+
### Adding headers
|
33
|
+
|
34
|
+
User.all.to_csv(:headers => [:id, :name])
|
35
|
+
|
36
|
+
## Usage with responders
|
37
|
+
|
38
|
+
On a Rails application it's very common to use responders when you want to display the same data but with a different format.
|
39
|
+
|
40
|
+
Considering again that your model is User and that you have a controller called UsersController generated by scaffold. Change:
|
41
|
+
|
42
|
+
def index
|
43
|
+
@users = User.all
|
44
|
+
|
45
|
+
respond_to do |format|
|
46
|
+
format.html # index.html.erb
|
47
|
+
format.json { render json: @users }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
To:
|
52
|
+
|
53
|
+
def index
|
54
|
+
@users = User.all
|
55
|
+
|
56
|
+
respond_to do |format|
|
57
|
+
format.html # index.html.erb
|
58
|
+
format.json { render json: @users }
|
59
|
+
format.csv { render csv: @users }
|
60
|
+
end
|
61
|
+
end
|
data/lib/to_csv_rails.rb
CHANGED
@@ -14,4 +14,11 @@ else
|
|
14
14
|
end
|
15
15
|
|
16
16
|
require "to_csv_rails/version"
|
17
|
-
require "to_csv_rails/array.rb"
|
17
|
+
require "to_csv_rails/array.rb"
|
18
|
+
|
19
|
+
if defined?(ActionController::Renderers) && ActionController::Renderers.respond_to?(:add)
|
20
|
+
ActionController::Renderers.add :csv do |csv, options|
|
21
|
+
self.content_type ||= Mime::CSV
|
22
|
+
self.response_body = csv.respond_to?(:to_csv) ? csv.to_csv : csv
|
23
|
+
end
|
24
|
+
end
|
data/lib/to_csv_rails/version.rb
CHANGED
data/test/test_csv.rb
CHANGED
@@ -11,14 +11,14 @@ class CsvTest < Test::Unit::TestCase
|
|
11
11
|
|
12
12
|
data = User.all
|
13
13
|
|
14
|
-
assert_equal data.
|
14
|
+
assert_equal data.to_csv,
|
15
15
|
"#{user1.id},User 1,user1@email.com\n#{user2.id},User 2,user2@email.com\n"
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_export_with_empty_data
|
19
19
|
data = User.all
|
20
20
|
|
21
|
-
assert_equal data.
|
21
|
+
assert_equal data.to_csv,
|
22
22
|
""
|
23
23
|
end
|
24
24
|
|
@@ -28,7 +28,7 @@ class CsvTest < Test::Unit::TestCase
|
|
28
28
|
|
29
29
|
data = User.all
|
30
30
|
|
31
|
-
assert_equal data.
|
31
|
+
assert_equal data.to_csv(:only => [:name]),
|
32
32
|
"User 1\nUser 2\n"
|
33
33
|
end
|
34
34
|
|
@@ -38,7 +38,7 @@ class CsvTest < Test::Unit::TestCase
|
|
38
38
|
|
39
39
|
data = User.all
|
40
40
|
|
41
|
-
assert_equal data.
|
41
|
+
assert_equal data.to_csv(:except => [:id, :name]),
|
42
42
|
"user1@email.com\nuser2@email.com\n"
|
43
43
|
end
|
44
44
|
|
@@ -48,7 +48,7 @@ class CsvTest < Test::Unit::TestCase
|
|
48
48
|
|
49
49
|
data = User.all
|
50
50
|
|
51
|
-
assert_equal data.
|
51
|
+
assert_equal data.to_csv(:headers => [:id, :name, :email]),
|
52
52
|
"id,name,email\n#{user1.id},User 1,user1@email.com\n#{user2.id},User 2,user2@email.com\n"
|
53
53
|
end
|
54
54
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: to_csv_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-30 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: An to_csv implementation focused on making it easier for Rails developers
|
15
15
|
to export data to CSV format.
|
@@ -23,9 +23,9 @@ files:
|
|
23
23
|
- lib/to_csv_rails/version.rb
|
24
24
|
- lib/to_csv_rails.rb
|
25
25
|
- Rakefile
|
26
|
+
- README.md
|
26
27
|
- test/test_csv.rb
|
27
28
|
- test/test_helper.rb
|
28
|
-
- to_csv_rails-0.1.gem
|
29
29
|
- to_csv_rails.gemspec
|
30
30
|
homepage: http://fernandomarcelo.com/
|
31
31
|
licenses: []
|