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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c5ad9d5c8bda0efcb8407450d74c467aa0912882
4
- data.tar.gz: 49d9fa1e8d4464c0c432e71f279dfcc72d084c9c
3
+ metadata.gz: 0456d41778a62cf6042dcf1afe16f46e54967ae3
4
+ data.tar.gz: aeae7731318782ed808fecb6b8eb43c1ac8b03ef
5
5
  SHA512:
6
- metadata.gz: e8e20a0d0e3b957f199f943a7f6bc69d2b9e0a6a2ad19edc4657708dbcb0dbd944ad6812a388777aaabd9b5c3c21f1c144d349a63cb20067054264c6e07f8a6e
7
- data.tar.gz: d7fab3e3c13ac5dd0706a07597ff52af665547e663d5da19fbb7750bbb455e646d7ebf6bac836b551d57fb4c646c4f5a41d4ef309ab5e3e70162af04fa9be44f
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.8.7, 1.9.2, 1.9.3 and 2.0.0
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 (c) 2011-2013 Peter Brown. See LICENSE.txt for
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
- require 'render_csv/extension'
2
- require 'action_controller/metal/renderers'
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
- self.response_body = csv.respond_to?(:to_csv) ? csv.to_csv(options) : csv
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
@@ -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
- csv = [columns.join(',')]
18
- csv.concat(map {|v| columns.map {|c| v.send(c) }.join(',') })
19
-
20
- csv.join("\n")
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
@@ -1,3 +1,3 @@
1
1
  module RenderCsv
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0.beta1"
3
3
  end
@@ -1,73 +1,59 @@
1
1
  require './spec/spec_helper'
2
2
 
3
3
  describe Array do
4
- let(:sebastian) { Dog.create!(:name => 'Sebastian', :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
- it 'should return an empty string if array is empty' do
10
- [].to_csv.should eql('')
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
- it 'should return return a csv of the array if it is not an AR class' do
14
- [1,2,3].to_csv.should eql('1,2,3')
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
- it 'should return a all columns with no option' do
18
- csv = ["id,name,age,weight"]
19
- csv << ["#{sebastian.id},Sebastian,3,76.8"]
20
- csv << ["#{ruby.id},Ruby,3,68.2"]
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
- it 'should include only columns specified' do
27
- csv = ["name,age"]
28
- csv << ["Sebastian,3"]
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
- it 'should exclude columns specified' do
39
- csv = ["id,name,weight"]
40
- csv << ["#{sebastian.id},Sebastian,76.8"]
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
- array.to_csv(options).should eql(csv.join("\n"))
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
- it 'should include method values when specified' do
50
- csv = ["id,name,age,weight,human_age"]
51
- csv << ["#{sebastian.id},Sebastian,3,76.8,25"]
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
- it 'should include method values with other options' do
62
- csv = ["age,weight,human_age"]
63
- csv << ["3,76.8,25"]
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
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
 
4
4
  require 'rails/all'
5
5
  require 'rspec/rails'
6
- require 'render_csv'
6
+ require 'render_csv/extension'
7
7
 
8
8
  # Requires supporting files with custom matchers and macros, etc,
9
9
  # in ./support/ and its subdirectories.
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: 1.0.0
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: 2013-10-20 00:00:00.000000000 Z
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: '0'
112
+ version: 1.3.1
112
113
  requirements: []
113
114
  rubyforge_project:
114
- rubygems_version: 2.1.9
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