pg_csv 0.1.1 → 0.1.2

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.
data/.gitignore CHANGED
@@ -11,3 +11,4 @@ test/dummy/.sass-cache
11
11
  tmp/*
12
12
  !tmp/.gitkeep
13
13
  *.gem
14
+ todo
data/lib/pg_csv.rb CHANGED
@@ -19,17 +19,17 @@ class PgCsv
19
19
  # => :file - just save to file * default
20
20
 
21
21
  def initialize(opts = {})
22
- @options = opts
22
+ @options = opts.symbolize_keys
23
23
  end
24
24
 
25
25
  # do export :to - filename or stream
26
26
  def export(to, opts = {})
27
- @local_options = opts
27
+ @local_options = opts.symbolize_keys
28
28
 
29
29
  raise ":connection should be" unless connection
30
- raise ":sql should be" unless o(:sql)
30
+ raise ":sql should be" unless sql
31
31
 
32
- with_temp_file(to, o(:temp_file), o(:temp_dir)) do |_to|
32
+ with_temp_file(to, temp_file, temp_dir) do |_to|
33
33
  export_to(_to)
34
34
  end
35
35
  end
@@ -38,12 +38,12 @@ protected
38
38
 
39
39
  def with_temp_file(to, use_temp_file, tmp_dir)
40
40
  if use_temp_file
41
- check_to_str(to)
41
+ check_str(to)
42
42
 
43
43
  require 'fileutils'
44
44
  require 'tempfile'
45
45
 
46
- tempfile = Tempfile.new("pg_csv", tmp_dir || '/tmp')
46
+ tempfile = Tempfile.new("pg_csv", tmp_dir)
47
47
  yield(tempfile.path)
48
48
  FileUtils.mv(tempfile.path, to)
49
49
  info "<=== moving export to #{to}"
@@ -53,8 +53,7 @@ protected
53
53
  end
54
54
 
55
55
  def export_to(to)
56
- exporter = method(:export_to_stream).to_proc
57
-
56
+
58
57
  start = Time.now
59
58
  info "===> start generate export #{to}, type: #{type}"
60
59
 
@@ -63,11 +62,11 @@ protected
63
62
  case type
64
63
 
65
64
  when :file
66
- check_to_str(to)
65
+ check_str(to)
67
66
  File.open(to, 'w', &exporter)
68
67
 
69
68
  when :gzip
70
- check_to_str(to)
69
+ check_str(to)
71
70
  Zlib::GzipWriter.open(to, &exporter)
72
71
 
73
72
  when :stream
@@ -86,13 +85,17 @@ protected
86
85
  result
87
86
  end
88
87
 
89
- def check_to_str(to)
88
+ def check_str(to)
90
89
  raise "'to' should be an string" unless to.is_a?(String)
91
90
  end
92
91
 
92
+ def exporter
93
+ method(:export_to_stream).to_proc
94
+ end
95
+
93
96
  def export_to_stream(stream)
94
97
  write_csv(stream)
95
- stream.flush
98
+ stream.flush if stream.respond_to?(:flush)
96
99
  end
97
100
 
98
101
  def write_csv(stream)
@@ -129,7 +132,7 @@ protected
129
132
  def query
130
133
  <<-SQL
131
134
  COPY (
132
- #{o(:sql)}
135
+ #{sql}
133
136
  ) TO STDOUT
134
137
  WITH CSV
135
138
  DELIMITER '#{delimiter}'
@@ -182,4 +185,16 @@ DELIMITER '#{delimiter}'
182
185
  o(:delimiter) || ','
183
186
  end
184
187
 
188
+ def sql
189
+ o(:sql)
190
+ end
191
+
192
+ def temp_file
193
+ o(:temp_file)
194
+ end
195
+
196
+ def temp_dir
197
+ o(:temp_dir) || '/tmp'
198
+ end
199
+
185
200
  end
@@ -1,3 +1,3 @@
1
1
  class PgCsv
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/pg_csv.gemspec CHANGED
@@ -23,4 +23,4 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "rspec"
24
24
  s.add_development_dependency "rake"
25
25
 
26
- end
26
+ end
data/spec/pg_csv_spec.rb CHANGED
@@ -135,4 +135,15 @@ describe PgCsv do
135
135
  end
136
136
  end
137
137
 
138
+ it "custom prepare row" do
139
+ e = PgCsv.new(:sql => @sql)
140
+
141
+ def e.prepare_row(row)
142
+ row.split(",").join("-|-")
143
+ end
144
+
145
+ e.export(@name)
146
+ with_file(@name){|d| d.should == "4-|-5-|-6\n1-|-2-|-3\n" }
147
+ end
148
+
138
149
  end
data/spec/spec_support.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'fileutils'
2
2
 
3
- conn = {'adapter' => 'postgresql', 'database' => 'pgcsv_test', 'encoding' => 'utf8', 'username' => 'kostya', 'password' => 'password'}
3
+ conn = {'adapter' => 'postgresql', 'database' => 'pgcsv_test'}
4
4
  ActiveRecord::Base.establish_connection conn
5
5
 
6
6
  class Test < ActiveRecord::Base
metadata CHANGED
@@ -1,88 +1,88 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pg_csv
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Makarchev Konstantin
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-05-31 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-06-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: pg
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: activerecord
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: activerecord
32
+ requirement: !ruby/object:Gem::Requirement
38
33
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: rspec
50
39
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
52
49
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
60
54
  type: :development
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: rake
64
55
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
66
65
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
74
70
  type: :development
75
- version_requirements: *id004
76
- description: Fast AR/PostgreSQL csv export. Used pg function 'copy to csv'. Effective on millions rows.
77
- email:
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Fast AR/PostgreSQL csv export. Used pg function 'copy to csv'. Effective
79
+ on millions rows.
80
+ email:
78
81
  - kostya27@gmail.com
79
82
  executables: []
80
-
81
83
  extensions: []
82
-
83
84
  extra_rdoc_files: []
84
-
85
- files:
85
+ files:
86
86
  - .gitignore
87
87
  - Gemfile
88
88
  - Gemfile.lock
@@ -98,36 +98,27 @@ files:
98
98
  - spec/tmp/.gitkeep
99
99
  homepage: http://github.com/kostya/pg_csv
100
100
  licenses: []
101
-
102
101
  post_install_message:
103
102
  rdoc_options: []
104
-
105
- require_paths:
103
+ require_paths:
106
104
  - lib
107
- required_ruby_version: !ruby/object:Gem::Requirement
105
+ required_ruby_version: !ruby/object:Gem::Requirement
108
106
  none: false
109
- requirements:
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- hash: 3
113
- segments:
114
- - 0
115
- version: "0"
116
- required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
112
  none: false
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- hash: 3
122
- segments:
123
- - 0
124
- version: "0"
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
125
117
  requirements: []
126
-
127
118
  rubyforge_project:
128
119
  rubygems_version: 1.8.24
129
120
  signing_key:
130
121
  specification_version: 3
131
- summary: Fast AR/PostgreSQL csv export. Used pg function 'copy to csv'. Effective on millions rows.
122
+ summary: Fast AR/PostgreSQL csv export. Used pg function 'copy to csv'. Effective
123
+ on millions rows.
132
124
  test_files: []
133
-