postgres-copy 0.5.5 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+
5
+ branches:
6
+ only:
7
+ - master
data/Gemfile CHANGED
@@ -1,14 +1,5 @@
1
1
  source :gemcutter
2
2
 
3
- gem 'pg'
4
- gem 'activerecord'
5
- gem 'rails'
6
- gem 'rake'
7
- gem 'rspec', '~> 2.6'
8
- gem 'rspec-core', '~> 2.6'
9
- gem 'responders'
10
-
11
-
12
- group :test, :development do
13
- gem 'jeweler'
14
- end
3
+ # specify gem dependencies in activerecord-postgres-hstore.gemspec
4
+ # except the platform-specific dependencies below
5
+ gemspec
@@ -1,12 +1,21 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ postgres-copy (0.5.7)
5
+ activerecord (>= 3.0.0)
6
+ pg
7
+ rails (>= 3.0.0)
8
+ responders
9
+
1
10
  GEM
2
11
  remote: http://rubygems.org/
3
12
  specs:
4
- actionmailer (3.2.9)
5
- actionpack (= 3.2.9)
13
+ actionmailer (3.2.11)
14
+ actionpack (= 3.2.11)
6
15
  mail (~> 2.4.4)
7
- actionpack (3.2.9)
8
- activemodel (= 3.2.9)
9
- activesupport (= 3.2.9)
16
+ actionpack (3.2.11)
17
+ activemodel (= 3.2.11)
18
+ activesupport (= 3.2.11)
10
19
  builder (~> 3.0.0)
11
20
  erubis (~> 2.7.0)
12
21
  journey (~> 1.0.4)
@@ -14,60 +23,59 @@ GEM
14
23
  rack-cache (~> 1.2)
15
24
  rack-test (~> 0.6.1)
16
25
  sprockets (~> 2.2.1)
17
- activemodel (3.2.9)
18
- activesupport (= 3.2.9)
26
+ activemodel (3.2.11)
27
+ activesupport (= 3.2.11)
19
28
  builder (~> 3.0.0)
20
- activerecord (3.2.9)
21
- activemodel (= 3.2.9)
22
- activesupport (= 3.2.9)
29
+ activerecord (3.2.11)
30
+ activemodel (= 3.2.11)
31
+ activesupport (= 3.2.11)
23
32
  arel (~> 3.0.2)
24
33
  tzinfo (~> 0.3.29)
25
- activeresource (3.2.9)
26
- activemodel (= 3.2.9)
27
- activesupport (= 3.2.9)
28
- activesupport (3.2.9)
34
+ activeresource (3.2.11)
35
+ activemodel (= 3.2.11)
36
+ activesupport (= 3.2.11)
37
+ activesupport (3.2.11)
29
38
  i18n (~> 0.6)
30
39
  multi_json (~> 1.0)
31
40
  arel (3.0.2)
32
41
  builder (3.0.4)
33
42
  diff-lcs (1.1.3)
34
43
  erubis (2.7.0)
35
- git (1.2.5)
36
44
  hike (1.2.1)
37
- i18n (0.6.0)
38
- jeweler (1.8.4)
39
- bundler (~> 1.0)
40
- git (>= 1.2.5)
41
- rake
42
- rdoc
45
+ i18n (0.6.1)
43
46
  journey (1.0.4)
44
- json (1.6.4)
47
+ json (1.7.6)
45
48
  mail (2.4.4)
49
+ i18n (>= 0.4.0)
50
+ mime-types (~> 1.16)
51
+ treetop (~> 1.4.8)
52
+ mime-types (1.19)
46
53
  multi_json (1.5.0)
47
54
  pg (0.14.1)
48
- rack (1.4.1)
55
+ polyglot (0.3.3)
56
+ rack (1.4.4)
49
57
  rack-cache (1.2)
50
58
  rack (>= 0.4)
51
- rack-ssl (1.3.2)
59
+ rack-ssl (1.3.3)
52
60
  rack
53
61
  rack-test (0.6.2)
54
62
  rack (>= 1.0)
55
- rails (3.2.9)
56
- actionmailer (= 3.2.9)
57
- actionpack (= 3.2.9)
58
- activerecord (= 3.2.9)
59
- activeresource (= 3.2.9)
60
- activesupport (= 3.2.9)
63
+ rails (3.2.11)
64
+ actionmailer (= 3.2.11)
65
+ actionpack (= 3.2.11)
66
+ activerecord (= 3.2.11)
67
+ activeresource (= 3.2.11)
68
+ activesupport (= 3.2.11)
61
69
  bundler (~> 1.0)
62
- railties (= 3.2.9)
63
- railties (3.2.9)
64
- actionpack (= 3.2.9)
65
- activesupport (= 3.2.9)
70
+ railties (= 3.2.11)
71
+ railties (3.2.11)
72
+ actionpack (= 3.2.11)
73
+ activesupport (= 3.2.11)
66
74
  rack-ssl (~> 1.3.2)
67
75
  rake (>= 0.8.7)
68
76
  rdoc (~> 3.4)
69
77
  thor (>= 0.14.6, < 2.0)
70
- rake (10.0.2)
78
+ rake (10.0.3)
71
79
  rdoc (3.12)
72
80
  json (~> 1.4)
73
81
  responders (0.9.3)
@@ -76,28 +84,27 @@ GEM
76
84
  rspec-core (~> 2.12.0)
77
85
  rspec-expectations (~> 2.12.0)
78
86
  rspec-mocks (~> 2.12.0)
79
- rspec-core (2.12.1)
80
- rspec-expectations (2.12.0)
87
+ rspec-core (2.12.2)
88
+ rspec-expectations (2.12.1)
81
89
  diff-lcs (~> 1.1.3)
82
- rspec-mocks (2.12.0)
90
+ rspec-mocks (2.12.2)
83
91
  sprockets (2.2.2)
84
92
  hike (~> 1.2)
85
93
  multi_json (~> 1.0)
86
94
  rack (~> 1.0)
87
95
  tilt (~> 1.1, != 1.3.0)
88
- thor (0.16.0)
96
+ thor (0.17.0)
89
97
  tilt (1.3.3)
98
+ treetop (1.4.12)
99
+ polyglot
100
+ polyglot (>= 0.3.1)
90
101
  tzinfo (0.3.35)
91
102
 
92
103
  PLATFORMS
93
104
  ruby
94
105
 
95
106
  DEPENDENCIES
96
- activerecord
97
- jeweler
98
- pg
99
- rails
100
- rake
101
- responders
102
- rspec (~> 2.6)
103
- rspec-core (~> 2.6)
107
+ bundler
108
+ postgres-copy!
109
+ rdoc
110
+ rspec (~> 2.12)
data/README.md CHANGED
@@ -116,6 +116,39 @@ Which will generate the following SQL command:
116
116
  COPY users (id, name) FROM '/tmp/users.dat' WITH BINARY
117
117
 
118
118
 
119
+ ### Using the CSV Responder
120
+ If you want to make the result of a COPY command available to download this gem provides a CSV responder that, in conjunction with [inherited_resources](https://github.com/josevalim/inherited_resources), is a very powerfull tool. BTW, do not try to use the responder without inherited_resources.
121
+
122
+ The advantage of using this CSV responder over generating the CSV file, is that it will iterate over the resulting lines and send them to the client as they became available, so you will not have any problem with memory consumption or timeouts executing the action.
123
+
124
+ Here's an example of controller using inherited resources and the CSV Responder:
125
+
126
+ ```ruby
127
+ class Clients < ApplicationController
128
+ inherit_resources
129
+ responders :csv
130
+ respond_to :csv
131
+ actions :index
132
+ end
133
+ ```
134
+
135
+ The example above should be enough to generate a CSV file with clients (given that database and routes are set up accordingly) if you access the index action passing csv as the format.
136
+ The [has_scope](https://github.com/plataformatec/has_scope) gem (included by default in inherited_resources) is very useful to filter the generated CSV file using model scopes.
137
+
138
+ You could use something such as:
139
+ ```ruby
140
+ class Clients < ApplicationController
141
+ inherit_resources
142
+ responders :csv
143
+ respond_to :csv
144
+ actions :index
145
+ has_scope :by_name
146
+ end
147
+ ```
148
+
149
+ To filter clients by name using a corresponding model scope.
150
+ One could argue that this responder should be in a separate gem. But it's a very small piece of code and make the CSV available for download is a very common use case of postgres-copy.
151
+
119
152
  ## Note on Patches/Pull Requests
120
153
 
121
154
  * Fork the project.
data/Rakefile CHANGED
@@ -1,31 +1,14 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.expand_path("../lib", __FILE__)
3
+ require 'bundler/gem_tasks'
1
4
  require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "postgres-copy"
8
- gem.summary = %Q{Put COPY command functionality in ActiveRecord's model class}
9
- gem.description = %Q{Now you can use the super fast COPY for import/export data directly from your AR models.}
10
- gem.email = "diogob@gmail.com"
11
- gem.homepage = "http://github.com/diogob/postgres-copy"
12
- gem.authors = ["Diogo Biazus"]
13
- gem.add_development_dependency "rspec", ">= 1.2.9"
14
- gem.add_dependency "activerecord", ">= 3.0.0"
15
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
- end
17
- Jeweler::GemcutterTasks.new
18
- rescue LoadError
19
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
- end
5
+ require 'rspec/core/rake_task'
6
+ require 'rdoc/task'
21
7
 
22
- require "rspec/core/rake_task" # RSpec 2.0
23
- RSpec::Core::RakeTask.new(:spec) do |spec|
24
- spec.pattern = 'spec/*_spec.rb'
25
- end
26
8
  task :default => :spec
27
9
 
28
- require 'rdoc/task'
10
+ RSpec::Core::RakeTask.new(:spec)
11
+
29
12
  Rake::RDocTask.new do |rdoc|
30
13
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
31
14
  rdoc.rdoc_dir = 'rdoc'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.5
1
+ 0.5.6
@@ -1,8 +1,10 @@
1
- module Responders::CsvResponder
2
- def to_csv
3
- controller.response_body = Enumerator.new do |y|
4
- controller.send(:end_of_association_chain).pg_copy_to do |line|
5
- y << line
1
+ module Responders
2
+ module CsvResponder
3
+ def to_csv
4
+ controller.response_body = Enumerator.new do |y|
5
+ controller.send(:end_of_association_chain).pg_copy_to do |line|
6
+ y << line
7
+ end
6
8
  end
7
9
  end
8
10
  end
@@ -1,97 +1,33 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib/', __FILE__)
3
+ $:.unshift lib unless $:.include?(lib)
4
+
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "postgres-copy"
8
- s.version = "0.5.5"
8
+ s.version = "0.5.7"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
+ s.platform = Gem::Platform::RUBY
11
+ s.required_ruby_version = ">= 1.8.7"
11
12
  s.authors = ["Diogo Biazus"]
12
- s.date = "2013-01-29"
13
+ s.date = "2013-01-31"
13
14
  s.description = "Now you can use the super fast COPY for import/export data directly from your AR models."
14
15
  s.email = "diogob@gmail.com"
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.md"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".rspec",
22
- "Gemfile",
23
- "Gemfile.lock",
24
- "LICENSE",
25
- "README.md",
26
- "Rakefile",
27
- "VERSION",
28
- "lib/postgres-copy.rb",
29
- "lib/postgres-copy/active_record.rb",
30
- "lib/postgres-copy/csv_responder.rb",
31
- "postgres-copy.gemspec",
32
- "spec/fixtures/2_col_binary_data.dat",
33
- "spec/fixtures/comma_with_header.csv",
34
- "spec/fixtures/extra_field.rb",
35
- "spec/fixtures/reserved_word_model.rb",
36
- "spec/fixtures/reserved_words.csv",
37
- "spec/fixtures/semicolon_with_different_header.csv",
38
- "spec/fixtures/semicolon_with_header.csv",
39
- "spec/fixtures/tab_only_data.csv",
40
- "spec/fixtures/tab_with_different_header.csv",
41
- "spec/fixtures/tab_with_error.csv",
42
- "spec/fixtures/tab_with_extra_line.csv",
43
- "spec/fixtures/tab_with_header.csv",
44
- "spec/fixtures/tab_with_two_lines.csv",
45
- "spec/fixtures/test_model.rb",
46
- "spec/pg_copy_from_binary_spec.rb",
47
- "spec/pg_copy_from_spec.rb",
48
- "spec/pg_copy_to_binary_spec.rb",
49
- "spec/pg_copy_to_spec.rb",
50
- "spec/spec.opts",
51
- "spec/spec_helper.rb"
52
- ]
16
+ git_files = `git ls-files`.split("\n") rescue ''
17
+ s.files = git_files
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = []
20
+ s.require_paths = %w(lib)
53
21
  s.homepage = "http://github.com/diogob/postgres-copy"
54
22
  s.require_paths = ["lib"]
55
- s.rubygems_version = "1.8.24"
56
23
  s.summary = "Put COPY command functionality in ActiveRecord's model class"
57
24
 
58
- if s.respond_to? :specification_version then
59
- s.specification_version = 3
60
-
61
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
62
- s.add_runtime_dependency(%q<pg>, [">= 0"])
63
- s.add_runtime_dependency(%q<activerecord>, [">= 0"])
64
- s.add_runtime_dependency(%q<rails>, [">= 0"])
65
- s.add_runtime_dependency(%q<rake>, [">= 0"])
66
- s.add_runtime_dependency(%q<rspec>, ["~> 2.6"])
67
- s.add_runtime_dependency(%q<rspec-core>, ["~> 2.6"])
68
- s.add_runtime_dependency(%q<responders>, [">= 0"])
69
- s.add_development_dependency(%q<jeweler>, [">= 0"])
70
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
71
- s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0"])
72
- else
73
- s.add_dependency(%q<pg>, [">= 0"])
74
- s.add_dependency(%q<activerecord>, [">= 0"])
75
- s.add_dependency(%q<rails>, [">= 0"])
76
- s.add_dependency(%q<rake>, [">= 0"])
77
- s.add_dependency(%q<rspec>, ["~> 2.6"])
78
- s.add_dependency(%q<rspec-core>, ["~> 2.6"])
79
- s.add_dependency(%q<responders>, [">= 0"])
80
- s.add_dependency(%q<jeweler>, [">= 0"])
81
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
82
- s.add_dependency(%q<activerecord>, [">= 3.0.0"])
83
- end
84
- else
85
- s.add_dependency(%q<pg>, [">= 0"])
86
- s.add_dependency(%q<activerecord>, [">= 0"])
87
- s.add_dependency(%q<rails>, [">= 0"])
88
- s.add_dependency(%q<rake>, [">= 0"])
89
- s.add_dependency(%q<rspec>, ["~> 2.6"])
90
- s.add_dependency(%q<rspec-core>, ["~> 2.6"])
91
- s.add_dependency(%q<responders>, [">= 0"])
92
- s.add_dependency(%q<jeweler>, [">= 0"])
93
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
94
- s.add_dependency(%q<activerecord>, [">= 3.0.0"])
95
- end
25
+ s.add_dependency "pg"
26
+ s.add_dependency "activerecord", '>= 3.0.0'
27
+ s.add_dependency "rails", '>= 3.0.0'
28
+ s.add_dependency "responders"
29
+ s.add_development_dependency "bundler"
30
+ s.add_development_dependency "rdoc"
31
+ s.add_development_dependency "rspec", "~> 2.12"
96
32
  end
97
33
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postgres-copy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.7
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: 2013-01-29 00:00:00.000000000 Z
12
+ date: 2013-01-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pg
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: 3.0.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: 3.0.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rails
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: 3.0.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,9 +58,9 @@ dependencies:
58
58
  requirements:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 3.0.0
62
62
  - !ruby/object:Gem::Dependency
63
- name: rake
63
+ name: responders
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
@@ -76,46 +76,14 @@ dependencies:
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  - !ruby/object:Gem::Dependency
79
- name: rspec
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: '2.6'
86
- type: :runtime
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: '2.6'
94
- - !ruby/object:Gem::Dependency
95
- name: rspec-core
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ~>
100
- - !ruby/object:Gem::Version
101
- version: '2.6'
102
- type: :runtime
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: '2.6'
110
- - !ruby/object:Gem::Dependency
111
- name: responders
79
+ name: bundler
112
80
  requirement: !ruby/object:Gem::Requirement
113
81
  none: false
114
82
  requirements:
115
83
  - - ! '>='
116
84
  - !ruby/object:Gem::Version
117
85
  version: '0'
118
- type: :runtime
86
+ type: :development
119
87
  prerelease: false
120
88
  version_requirements: !ruby/object:Gem::Requirement
121
89
  none: false
@@ -124,7 +92,7 @@ dependencies:
124
92
  - !ruby/object:Gem::Version
125
93
  version: '0'
126
94
  - !ruby/object:Gem::Dependency
127
- name: jeweler
95
+ name: rdoc
128
96
  requirement: !ruby/object:Gem::Requirement
129
97
  none: false
130
98
  requirements:
@@ -144,44 +112,28 @@ dependencies:
144
112
  requirement: !ruby/object:Gem::Requirement
145
113
  none: false
146
114
  requirements:
147
- - - ! '>='
115
+ - - ~>
148
116
  - !ruby/object:Gem::Version
149
- version: 1.2.9
117
+ version: '2.12'
150
118
  type: :development
151
119
  prerelease: false
152
120
  version_requirements: !ruby/object:Gem::Requirement
153
121
  none: false
154
122
  requirements:
155
- - - ! '>='
156
- - !ruby/object:Gem::Version
157
- version: 1.2.9
158
- - !ruby/object:Gem::Dependency
159
- name: activerecord
160
- requirement: !ruby/object:Gem::Requirement
161
- none: false
162
- requirements:
163
- - - ! '>='
164
- - !ruby/object:Gem::Version
165
- version: 3.0.0
166
- type: :runtime
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ! '>='
123
+ - - ~>
172
124
  - !ruby/object:Gem::Version
173
- version: 3.0.0
125
+ version: '2.12'
174
126
  description: Now you can use the super fast COPY for import/export data directly from
175
127
  your AR models.
176
128
  email: diogob@gmail.com
177
129
  executables: []
178
130
  extensions: []
179
- extra_rdoc_files:
180
- - LICENSE
181
- - README.md
131
+ extra_rdoc_files: []
182
132
  files:
183
133
  - .document
134
+ - .gitignore
184
135
  - .rspec
136
+ - .travis.yml
185
137
  - Gemfile
186
138
  - Gemfile.lock
187
139
  - LICENSE
@@ -223,16 +175,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
223
175
  requirements:
224
176
  - - ! '>='
225
177
  - !ruby/object:Gem::Version
226
- version: '0'
227
- segments:
228
- - 0
229
- hash: -1581525764819995656
178
+ version: 1.8.7
230
179
  required_rubygems_version: !ruby/object:Gem::Requirement
231
180
  none: false
232
181
  requirements:
233
182
  - - ! '>='
234
183
  - !ruby/object:Gem::Version
235
184
  version: '0'
185
+ segments:
186
+ - 0
187
+ hash: -2280961543461931489
236
188
  requirements: []
237
189
  rubyforge_project:
238
190
  rubygems_version: 1.8.24