render_csv 1.0.0 → 2.0.0.beta1
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.
- 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
|