render_csv 1.0.0 → 2.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -5
- data/CHANGELOG.md +13 -0
- data/README.md +2 -2
- data/lib/render_csv.rb +12 -4
- data/lib/render_csv/extension.rb +8 -4
- data/lib/render_csv/version.rb +1 -1
- data/spec/lib/array_spec.rb +37 -51
- data/spec/spec_helper.rb +1 -1
- metadata +18 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0456d41778a62cf6042dcf1afe16f46e54967ae3
|
4
|
+
data.tar.gz: aeae7731318782ed808fecb6b8eb43c1ac8b03ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84a934923c771e3f17aa484e95c9cc4dbfa81fef0fc6d9d4e19db8afd14b70da94b8b22b279a517353abc48f3e546f2581243c8cfc8b5a382b38f4a945b61217
|
7
|
+
data.tar.gz: b298832ae25962b4c9ade57b9485f63557a6a1512c0eba8f2fde6689e1a8d4e31ef3b5d45b01594fbbad6cc31ab5456dfec064436bff78f91020e13ccebf780d
|
data/.travis.yml
CHANGED
@@ -1,14 +1,10 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 1.8.7
|
4
3
|
- 1.9.3
|
5
4
|
- 2.0.0
|
5
|
+
- 2.1.0
|
6
6
|
gemfile:
|
7
7
|
- gemfiles/Gemfile.rails-3.0.x
|
8
8
|
- gemfiles/Gemfile.rails-3.1.x
|
9
9
|
- gemfiles/Gemfile.rails-3.2.x
|
10
10
|
- gemfiles/Gemfile.rails-4.0.x
|
11
|
-
matrix:
|
12
|
-
exclude:
|
13
|
-
- rvm: 1.8.7
|
14
|
-
gemfile: gemfiles/Gemfile.rails-4.0.x
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 2.0.0 (unreleased)
|
4
|
+
|
5
|
+
* Removes support for Ruby 1.8.7.
|
6
|
+
* Moves renderer into an after_initialize block so the Rails app is
|
7
|
+
loaded before it tries to register itself. Should fix intermittent
|
8
|
+
issues with it not working in production environments.
|
9
|
+
* Use Ruby's CSV library instead of manually building strings.
|
10
|
+
|
11
|
+
## 1.0.0
|
12
|
+
|
13
|
+
* Initial Release
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ Rails CSV renderer for ActiveRecord collections
|
|
11
11
|
|
12
12
|
*Rails:* 3.0.x - 4.0.x
|
13
13
|
|
14
|
-
*Ruby:* 1.
|
14
|
+
*Ruby:* 1.9.2, 1.9.3 and 2.0.0
|
15
15
|
|
16
16
|
## Installation
|
17
17
|
|
@@ -88,5 +88,5 @@ end
|
|
88
88
|
|
89
89
|
## Copyright
|
90
90
|
|
91
|
-
Copyright
|
91
|
+
Copyright © 2011-2014 Peter Brown. See LICENSE.txt for
|
92
92
|
further details.
|
data/lib/render_csv.rb
CHANGED
@@ -1,6 +1,14 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module RenderCsv
|
2
|
+
class RenderCsvRailtie < ::Rails::Railtie
|
3
|
+
config.after_initialize do
|
4
|
+
require 'render_csv/extension'
|
5
|
+
require 'action_controller/metal/renderers'
|
3
6
|
|
4
|
-
ActionController.add_renderer :csv do |csv, options|
|
5
|
-
|
7
|
+
ActionController.add_renderer :csv do |csv, options|
|
8
|
+
filename = options[:filename] || options[:template]
|
9
|
+
data = csv.respond_to?(:to_csv) ? csv.to_csv(options) : csv
|
10
|
+
send_data data, type: Mime::CSV, disposition: "attachment; filename=#{filename}.csv"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
6
14
|
end
|
data/lib/render_csv/extension.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
1
3
|
class Array
|
2
4
|
|
3
5
|
# Converts an array to CSV formatted string
|
@@ -14,9 +16,11 @@ class Array
|
|
14
16
|
columns -= options[:except].map(&:to_s) if options[:except]
|
15
17
|
columns += options[:add_methods].map(&:to_s) if options[:add_methods]
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
CSV.generate(encoding: 'utf-8') do |row|
|
20
|
+
row << columns
|
21
|
+
self.each do |obj|
|
22
|
+
row << columns.map { |c| obj.send(c) }
|
23
|
+
end
|
24
|
+
end
|
21
25
|
end
|
22
26
|
end
|
data/lib/render_csv/version.rb
CHANGED
data/spec/lib/array_spec.rb
CHANGED
@@ -1,73 +1,59 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Array do
|
4
|
-
let(:sebastian) { Dog.create!(:
|
5
|
-
let(:ruby) { Dog.create!(:
|
6
|
-
let(:shelby) { Dog.create!(:
|
7
|
-
let(:array) { [sebastian,ruby,shelby] }
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
let(:sebastian) { Dog.create!(name: "Sebastian O'Connor", age: 3, weight: 76.8) }
|
5
|
+
let(:ruby) { Dog.create!(name: 'Ruby', age: 3, weight: 68.2) }
|
6
|
+
let(:shelby) { Dog.create!(name: 'Shelby', age: 5, weight: 64.0) }
|
7
|
+
let(:array) { [sebastian, ruby, shelby] }
|
8
|
+
|
9
|
+
context 'array is empty' do
|
10
|
+
it 'returns an empty string' do
|
11
|
+
expect([].to_csv).to eql('')
|
12
|
+
end
|
11
13
|
end
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
+
context 'object is not an instance of AR class' do
|
16
|
+
it 'returns a csv of the array' do
|
17
|
+
expect([1, 2, 3].to_csv).to eql('1,2,3')
|
18
|
+
end
|
15
19
|
end
|
16
20
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
csv << ["#{shelby.id},Shelby,5,64.0"]
|
22
|
-
|
23
|
-
array.to_csv.should eql(csv.join("\n"))
|
21
|
+
context 'options is blank' do
|
22
|
+
it 'returns all columns' do
|
23
|
+
expect(array.to_csv).to eql "id,name,age,weight\n1,Sebastian O'Connor,3,76.8\n2,Ruby,3,68.2\n3,Shelby,5,64.0\n"
|
24
|
+
end
|
24
25
|
end
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
csv << ["Ruby,3"]
|
30
|
-
csv << ["Shelby,5"]
|
31
|
-
|
32
|
-
options = {:only => [:name, :age] }
|
33
|
-
|
34
|
-
array.to_csv(options).should eql(csv.join("\n"))
|
27
|
+
context 'options with :only param' do
|
28
|
+
it 'returns only columns specified' do
|
29
|
+
options = { only: [:name, :age] }
|
35
30
|
|
31
|
+
expect(array.to_csv(options)).to eql "name,age\nSebastian O'Connor,3\nRuby,3\nShelby,5\n"
|
32
|
+
end
|
36
33
|
end
|
37
34
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
csv << ["#{ruby.id},Ruby,68.2"]
|
42
|
-
csv << ["#{shelby.id},Shelby,64.0"]
|
43
|
-
|
44
|
-
options = {:except => [:age] }
|
35
|
+
context 'options with :exclude param' do
|
36
|
+
it 'excludes columns specified' do
|
37
|
+
options = { except: [:age] }
|
45
38
|
|
46
|
-
|
39
|
+
expect(array.to_csv(options)).to eql "id,name,weight\n7,Sebastian O'Connor,76.8\n8,Ruby,68.2\n9,Shelby,64.0\n"
|
40
|
+
end
|
47
41
|
end
|
48
42
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
csv << ["#{ruby.id},Ruby,3,68.2,25"]
|
53
|
-
csv << ["#{shelby.id},Shelby,5,64.0,33"]
|
54
|
-
|
55
|
-
options = {:add_methods => [:human_age] }
|
56
|
-
|
57
|
-
array.to_csv(options).should eql(csv.join("\n"))
|
43
|
+
context 'options with :add_methods' do
|
44
|
+
it 'includes specified method values' do
|
45
|
+
options = { add_methods: [:human_age] }
|
58
46
|
|
47
|
+
expect(array.to_csv(options)).to eql "id,name,age,weight,human_age\n10,Sebastian O'Connor,3,76.8,25\n11,Ruby,3,68.2,25\n12,Shelby,5,64.0,33\n"
|
48
|
+
end
|
59
49
|
end
|
60
50
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
csv << ["3,68.2,25"]
|
65
|
-
csv << ["5,64.0,33"]
|
66
|
-
|
67
|
-
options = {:except => [:id,:name], :add_methods => [:human_age] }
|
68
|
-
|
69
|
-
array.to_csv(options).should eql(csv.join("\n"))
|
51
|
+
context 'options with :expect and :add_methods' do
|
52
|
+
it 'includes method values with other options' do
|
53
|
+
options = { except: [:id,:name], add_methods: [:human_age] }
|
70
54
|
|
55
|
+
expect(array.to_csv(options)).to eql "age,weight,human_age\n3,76.8,25\n3,68.2,25\n5,64.0,33\n"
|
56
|
+
end
|
71
57
|
end
|
72
58
|
|
73
59
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: render_csv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Brown
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec-rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '2.12'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.12'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.3'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: json
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.6'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.6'
|
69
69
|
description: Adds a custom CSV renderer to Rails applications
|
@@ -73,9 +73,10 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
-
- .gitignore
|
77
|
-
- .rspec
|
78
|
-
- .travis.yml
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
78
|
+
- ".travis.yml"
|
79
|
+
- CHANGELOG.md
|
79
80
|
- CONTRIBUTING.md
|
80
81
|
- Gemfile
|
81
82
|
- LICENSE.txt
|
@@ -101,17 +102,17 @@ require_paths:
|
|
101
102
|
- lib
|
102
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
103
104
|
requirements:
|
104
|
-
- -
|
105
|
+
- - ">="
|
105
106
|
- !ruby/object:Gem::Version
|
106
107
|
version: '0'
|
107
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
109
|
requirements:
|
109
|
-
- -
|
110
|
+
- - ">"
|
110
111
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
112
|
+
version: 1.3.1
|
112
113
|
requirements: []
|
113
114
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.1
|
115
|
+
rubygems_version: 2.2.1
|
115
116
|
signing_key:
|
116
117
|
specification_version: 4
|
117
118
|
summary: Adds a custom CSV renderer to Rails applications
|