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 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