pg 0.17.1 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/BSDL +2 -2
  4. data/ChangeLog +0 -3506
  5. data/History.rdoc +308 -0
  6. data/Manifest.txt +35 -19
  7. data/README-Windows.rdoc +17 -28
  8. data/README.ja.rdoc +1 -2
  9. data/README.rdoc +113 -14
  10. data/Rakefile +67 -30
  11. data/Rakefile.cross +109 -83
  12. data/ext/errorcodes.def +101 -0
  13. data/ext/errorcodes.rb +1 -1
  14. data/ext/errorcodes.txt +33 -2
  15. data/ext/extconf.rb +55 -58
  16. data/ext/gvl_wrappers.c +4 -0
  17. data/ext/gvl_wrappers.h +27 -39
  18. data/ext/pg.c +262 -130
  19. data/ext/pg.h +266 -54
  20. data/ext/pg_binary_decoder.c +229 -0
  21. data/ext/pg_binary_encoder.c +163 -0
  22. data/ext/pg_coder.c +561 -0
  23. data/ext/pg_connection.c +1689 -990
  24. data/ext/pg_copy_coder.c +599 -0
  25. data/ext/pg_errors.c +6 -0
  26. data/ext/pg_record_coder.c +491 -0
  27. data/ext/pg_result.c +897 -164
  28. data/ext/pg_text_decoder.c +987 -0
  29. data/ext/pg_text_encoder.c +814 -0
  30. data/ext/pg_tuple.c +549 -0
  31. data/ext/pg_type_map.c +166 -0
  32. data/ext/pg_type_map_all_strings.c +116 -0
  33. data/ext/pg_type_map_by_class.c +244 -0
  34. data/ext/pg_type_map_by_column.c +313 -0
  35. data/ext/pg_type_map_by_mri_type.c +284 -0
  36. data/ext/pg_type_map_by_oid.c +356 -0
  37. data/ext/pg_type_map_in_ruby.c +299 -0
  38. data/ext/pg_util.c +149 -0
  39. data/ext/pg_util.h +65 -0
  40. data/lib/pg/basic_type_mapping.rb +522 -0
  41. data/lib/pg/binary_decoder.rb +23 -0
  42. data/lib/pg/coder.rb +104 -0
  43. data/lib/pg/connection.rb +153 -41
  44. data/lib/pg/constants.rb +2 -1
  45. data/lib/pg/exceptions.rb +2 -1
  46. data/lib/pg/result.rb +33 -6
  47. data/lib/pg/text_decoder.rb +46 -0
  48. data/lib/pg/text_encoder.rb +59 -0
  49. data/lib/pg/tuple.rb +30 -0
  50. data/lib/pg/type_map_by_column.rb +16 -0
  51. data/lib/pg.rb +29 -9
  52. data/spec/{lib/helpers.rb → helpers.rb} +151 -64
  53. data/spec/pg/basic_type_mapping_spec.rb +630 -0
  54. data/spec/pg/connection_spec.rb +1180 -477
  55. data/spec/pg/connection_sync_spec.rb +41 -0
  56. data/spec/pg/result_spec.rb +456 -120
  57. data/spec/pg/tuple_spec.rb +333 -0
  58. data/spec/pg/type_map_by_class_spec.rb +138 -0
  59. data/spec/pg/type_map_by_column_spec.rb +226 -0
  60. data/spec/pg/type_map_by_mri_type_spec.rb +136 -0
  61. data/spec/pg/type_map_by_oid_spec.rb +149 -0
  62. data/spec/pg/type_map_in_ruby_spec.rb +164 -0
  63. data/spec/pg/type_map_spec.rb +22 -0
  64. data/spec/pg/type_spec.rb +1123 -0
  65. data/spec/pg_spec.rb +26 -20
  66. data.tar.gz.sig +0 -0
  67. metadata +148 -91
  68. metadata.gz.sig +0 -0
  69. data/sample/array_insert.rb +0 -20
  70. data/sample/async_api.rb +0 -106
  71. data/sample/async_copyto.rb +0 -39
  72. data/sample/async_mixed.rb +0 -56
  73. data/sample/check_conn.rb +0 -21
  74. data/sample/copyfrom.rb +0 -81
  75. data/sample/copyto.rb +0 -19
  76. data/sample/cursor.rb +0 -21
  77. data/sample/disk_usage_report.rb +0 -186
  78. data/sample/issue-119.rb +0 -94
  79. data/sample/losample.rb +0 -69
  80. data/sample/minimal-testcase.rb +0 -17
  81. data/sample/notify_wait.rb +0 -72
  82. data/sample/pg_statistics.rb +0 -294
  83. data/sample/replication_monitor.rb +0 -231
  84. data/sample/test_binary_values.rb +0 -33
  85. data/sample/wal_shipper.rb +0 -434
  86. data/sample/warehouse_partitions.rb +0 -320
data/History.rdoc CHANGED
@@ -1,3 +1,311 @@
1
+ == v1.2.3 [2020-03-18] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ Bugfixes:
4
+
5
+ - Fix possible segfault at `PG::Coder#encode`, `decode` or their implicit calls through
6
+ a typemap after GC.compact. #327
7
+ - Fix possible segfault in `PG::TypeMapByClass` after GC.compact. #328
8
+
9
+
10
+ == v1.2.2 [2020-01-06] Michael Granger <ged@FaerieMUD.org>
11
+
12
+ Enhancements:
13
+
14
+ - Add a binary gem for Ruby 2.7.
15
+
16
+
17
+ == v1.2.1 [2020-01-02] Michael Granger <ged@FaerieMUD.org>
18
+
19
+ Enhancements:
20
+
21
+ - Added internal API for sequel_pg compatibility.
22
+
23
+
24
+ == v1.2.0 [2019-12-20] Michael Granger <ged@FaerieMUD.org>
25
+
26
+ Repository:
27
+ - Our primary repository has been moved to Github https://github.com/ged/ruby-pg .
28
+ Most of the issues from https://bitbucket.org/ged/ruby-pg have been migrated. #43
29
+
30
+ API enhancements:
31
+ - Add PG::Result#field_name_type= and siblings to allow symbols to be used as field names. #306
32
+ - Add new methods for error reporting:
33
+ - PG::Connection#set_error_context_visibility
34
+ - PG::Result#verbose_error_message
35
+ - PG::Result#result_verbose_error_message (alias)
36
+ - Update errorcodes and error classes to PostgreSQL-12.0.
37
+ - New constants: PG_DIAG_SEVERITY_NONLOCALIZED, PQERRORS_SQLSTATE, PQSHOW_CONTEXT_NEVER, PQSHOW_CONTEXT_ERRORS, PQSHOW_CONTEXT_ALWAYS
38
+
39
+ Type cast enhancements:
40
+ - Add PG::TextEncoder::Record and PG::TextDecoder::Record for en/decoding of Composite Types. #258, #36
41
+ - Add PG::BasicTypeRegistry.register_coder to register instances instead of classes.
42
+ This is useful to register parametrized en/decoders like PG::TextDecoder::Record .
43
+ - Add PG::BasicTypeMapForQueries#encode_array_as= to switch between various interpretations of ruby arrays.
44
+ - Add Time, Array<Time>, Array<BigDecimal> and Array<IPAddr> encoders to PG::BasicTypeMapForQueries
45
+ - Exchange sprintf based float encoder by very fast own implementation with more natural format. #301
46
+ - Define encode and decode methods only in en/decoders that implement it, so that they can be queried by respond_to? .
47
+ - Improve PG::TypeMapByColumn#inspect
48
+ - Accept Integer and Float as input to TextEncoder::Numeric . #310
49
+
50
+ Other enhancements:
51
+ - Allocate the data part and the ruby object of PG::Result in one step, so that we don't need to check for valid data.
52
+ This removes PG::Result.allocate and PG::Result.new, which were callable but without any practical use. #42
53
+ - Make use of PQresultMemorySize() of PostgreSQL-12 and fall back to our internal estimator.
54
+ - Improve performance of PG::Result#stream_each_tuple .
55
+ - Store client encoding in data part of PG::Connection and PG::Result objects, so that we no longer use ruby's internal encoding bits. #280
56
+ - Update Windows fat binary gem to OpenSSL-1.1.1d and PostgreSQL-12.1.
57
+ - Add support for TruffleRuby. It is regulary tested as part of our CI.
58
+ - Enable +frozen_string_literal+ in all pg's ruby files
59
+
60
+ Bugfixes:
61
+ - Update the license in gemspec to "BSD-2-Clause".
62
+ It was incorrectly labeled "BSD-3-Clause". #40
63
+ - Respect PG::Coder#flags in PG::Coder#to_h.
64
+ - Fix PG::Result memsize reporting after #clear.
65
+ - Release field names to GC on PG::Result#clear.
66
+ - Fix double free in PG::Result#stream_each_tuple when an exception is raised in the block.
67
+ - Fix PG::Result#stream_each_tuple to deliver typemapped values.
68
+ - Fix encoding of Array<unknown> with PG::BasicTypeMapForQueries
69
+
70
+ Deprecated:
71
+ - Add a deprecation warning to PG::Connection#socket .
72
+
73
+ Removed:
74
+ - Remove PG::Connection#guess_result_memsize= which was temporary added in pg-1.1.
75
+ - Remove PG::Result.allocate and PG::Result.new (see enhancements).
76
+ - Remove support of tainted objects. #307
77
+ - Remove support of ruby-2.0 and 2.1. Minimum is ruby-2.2 now.
78
+
79
+ Documentation:
80
+ - Update description of connection params. See PG::Connection.new
81
+ - Link many method descriptions to corresponding libpq's documentation.
82
+ - Update sync_* and async_* query method descriptions and document the aliases.
83
+ The primary documentation is now at the async_* methods which are the default since pg-1.1.
84
+ - Fix documentation of many constants
85
+
86
+
87
+ == v1.1.4 [2019-01-08] Michael Granger <ged@FaerieMUD.org>
88
+
89
+ - Fix PG::BinaryDecoder::Timestamp on 32 bit systems. # 284
90
+ - Add new error-codes of PostgreSQL-11.
91
+ - Add ruby-2.6 support for Windows fat binary gems and remove ruby-2.0 and 2.1.
92
+
93
+
94
+ == v1.1.3 [2018-09-06] Michael Granger <ged@FaerieMUD.org>
95
+
96
+ - Revert opimization that was sometimes causing EBADF in rb_wait_for_single_fd().
97
+
98
+
99
+ == v1.1.2 [2018-08-28] Michael Granger <ged@FaerieMUD.org>
100
+
101
+ - Don't generate aliases for JOHAB encoding.
102
+ This avoids linking to deprecated/private function rb_enc(db)_alias().
103
+
104
+
105
+ == v1.1.1 [2018-08-27] Michael Granger <ged@FaerieMUD.org>
106
+
107
+ - Reduce deprecation warnings to only one message per deprecation.
108
+
109
+
110
+ == v1.1.0 [2018-08-24] Michael Granger <ged@FaerieMUD.org>
111
+
112
+ Deprecated (disable warnings per PG_SKIP_DEPRECATION_WARNING=1):
113
+ - Forwarding conn.exec to conn.exec_params is deprecated.
114
+ - Forwarding conn.exec_params to conn.exec is deprecated.
115
+ - Forwarding conn.async_exec to conn.async_exec_params.
116
+ - Forwarding conn.send_query to conn.send_query_params is deprecated.
117
+ - Forwarding conn.async_exec_params to conn.async_exec is deprecated.
118
+
119
+ PG::Connection enhancements:
120
+ - Provide PG::Connection#sync_* and PG::Connection#async_* query methods for explicit calling syncronous or asynchronous libpq API.
121
+ - Make PG::Connection#exec and siblings switchable between sync and async API per PG::Connection.async_api= and change the default to async flavors.
122
+ - Add async flavors of exec_params, prepare, exec_prepared, describe_prepared and describe_portal.
123
+ They are identical to their syncronous counterpart, but make use of PostgreSQL's async API.
124
+ - Replace `rb_thread_fd_select()` by faster `rb_wait_for_single_fd()` in `conn.block` and `conn.async_exec` .
125
+ - Add PG::Connection#discard_results .
126
+ - Raise an ArgumentError for strings containing zero bytes by #escape, #escape_literal, #escape_identifier, #quote_ident and PG::TextEncoder::Identifier. These methods previously truncated strings.
127
+
128
+ Result retrieval enhancements:
129
+ - Add PG::Result#tuple_values to retrieve all field values of a row as array.
130
+ - Add PG::Tuple, PG::Result#tuple and PG::Result#stream_each_tuple .
131
+ PG::Tuple offers a way to lazy cast result values.
132
+ - Estimate PG::Result size allocated by libpq and notify the garbage collector about it when running on Ruby-2.4 or newer.
133
+ - Make the estimated PG::Result size available to ObjectSpace.memsize_of(result) .
134
+
135
+ Type cast enhancements:
136
+ - Replace Ruby code by a faster C implementation of the SimpleDecoder's timestamp decode functions. github #20
137
+ - Interpret years with up to 7 digists and BC dates by timestamp decoder.
138
+ - Add text timestamp decoders for UTC vs. local timezone variations.
139
+ - Add text timestamp encoders for UTC timezone.
140
+ - Add decoders for binary timestamps: PG::BinaryDecoder::Timestamp and variations.
141
+ - Add PG::Coder#flags accessor to allow modifications of de- respectively encoder behaviour.
142
+ - Add a flag to raise TypeError for invalid input values to PG::TextDecoder::Array .
143
+ - Add a text decoder for inet/cidr written in C.
144
+ - Add a numeric decoder written in C.
145
+ - Ensure input text is zero terminated for text format in PG::Coder#decode .
146
+
147
+ Source code enhancements:
148
+ - Fix headers and permission bits of various repository files.
149
+
150
+ Bugfixes:
151
+ - Properly decode array with prepended dimensions. #272
152
+ For now dimension decorations are ignored, but a correct Array is returned.
153
+ - Array-Decoder: Avoid leaking memory when an Exception is raised while parsing. Fixes #279
154
+
155
+
156
+ == v1.0.0 [2018-01-10] Michael Granger <ged@FaerieMUD.org>
157
+
158
+ Deprecated:
159
+ - Deprecate Ruby older than 2.2.
160
+ - Deprecate Connection#socket in favor of #socket_io.
161
+
162
+ Removed:
163
+ - Remove compatibility code for Ruby < 2.0 and PostgreSQL < 9.2.
164
+ - Remove partial compatibility with Rubinius.
165
+ - Remove top-level constants PGconn, PGresult, and PGError.
166
+
167
+ Enhancements:
168
+ - Update error codes to PostgreSQL-10
169
+ - Update Windows binary gems to Ruby-2.5, PostgreSQL 10.1 and
170
+ OpenSSL 1.1.0g.
171
+
172
+ Bugfixes:
173
+ - Fix URI detection for connection strings. #265 (thanks to jjoos)
174
+ - MINGW: Workaround segfault due to GCC linker error in conjunction with MSVC.
175
+ This happens when linking to PostgreSQL-10.0-x64 from EnterpriseDB.
176
+
177
+ Documentation fixes:
178
+ - Add PostgreSQL version since when the given function is supported. #263
179
+ - Better documentation to `encoder` and `decoder` arguments of COPY related methods.
180
+
181
+
182
+ == v0.21.0 [2017-06-12] Michael Granger <ged@FaerieMUD.org>
183
+
184
+ Enhancements:
185
+ - Move add_dll_directory to the Runtime namespace for newest versions
186
+ of RubyInstaller.
187
+ - Deprecate PGconn, PGresult, and PGError top-level constants; a warning
188
+ will be output the first time one of them is used. They will be
189
+ removed in the upcoming 1.0 release.
190
+
191
+ Documentation fixes:
192
+ - Update the docs for PG::Result#cmd_tuples
193
+
194
+ New Samples:
195
+ - Add an example of the nicer #copy_data way of doing `COPY`.
196
+
197
+
198
+ == v0.20.0 [2017-03-10] Michael Granger <ged@FaerieMUD.org>
199
+
200
+ Enhancements:
201
+ - Update error codes to PostgreSQL-9.6
202
+ - Update Windows binary gems to Ruby-2.4, PostgreSQL 9.6.1 and
203
+ OpenSSL 1.0.2j.
204
+ - Add support for RubyInstaller2 to Windows binary gems.
205
+
206
+ Bugfixes:
207
+ - Use secure JSON methods for JSON (de)serialisation. #248
208
+ - Fix Result#inspect on a cleared result.
209
+ - Fix test case that failed on Ruby-2.4. #255
210
+
211
+ Documentation fixes:
212
+ - Talk about Integer instead of Fixnum.
213
+ - Fix method signature of Coder#encode.
214
+
215
+
216
+ == v0.19.0 [2016-09-21] Michael Granger <ged@FaerieMUD.org>
217
+
218
+ - Deprecate Ruby 1.9
219
+
220
+ Enhancements:
221
+ - Respect and convert character encoding of all strings sent
222
+ to the server. #231
223
+ - Add PostgreSQL-9.5 functions PQsslInUse(), PQsslAttribute()
224
+ and PQsslAttributeNames().
225
+ - Various documentation fixes and improvements.
226
+ - Add mechanism to build without pg_config:
227
+ gem install pg -- --with-pg-config=ignore
228
+ - Update Windows binary gems to Ruby-2.3, PostgreSQL 9.5.4 and
229
+ OpenSSL 1.0.2f.
230
+ - Add JSON coders and add them to BasicTypeMapForResults and
231
+ BasicTypeMapBasedOnResult
232
+ - Allow build from git per bundler.
233
+
234
+ Bugfixes:
235
+ - Release GVL while calling PQsetClientEncoding(). #245
236
+ - Add __EXTENSIONS__ to Solaris/SmartOS for Ruby >= 2.3.x. #236
237
+ - Fix wrong exception when running SQL while in Connection#copy_data
238
+ block for output
239
+
240
+
241
+ == v0.18.4 [2015-11-13] Michael Granger <ged@FaerieMUD.org>
242
+
243
+ Enhancements:
244
+ - Fixing compilation problems with Microsoft Visual Studio 2008. GH #10
245
+ - Avoid name clash with xcode and jemalloc. PR#22, PR#23
246
+
247
+ Bugfixes:
248
+ - Avoid segfault, when quote_ident or TextEncoder::Identifier
249
+ is called with Array containing non-strings. #226
250
+
251
+
252
+ == v0.18.3 [2015-09-03] Michael Granger <ged@FaerieMUD.org>
253
+
254
+ Enhancements:
255
+ - Use rake-compiler-dock to build windows gems easily.
256
+ - Add CI-tests on appveyor and fix test cases accordingly.
257
+
258
+ Bugfixes:
259
+ - Fix data type resulting in wrong base64 encoding.
260
+ - Change instance_of checks to kind_of for subclassing. #220
261
+ - TextDecoder::Date returns an actual Ruby Date instead of a Time
262
+ (thanks to Thomas Ramfjord)
263
+
264
+
265
+ == v0.18.2 [2015-05-14] Michael Granger <ged@FaerieMUD.org>
266
+
267
+ Enhancements:
268
+
269
+ - Allow URI connection string (thanks to Chris Bandy)
270
+ - Allow Array type parameter to conn.quote_ident
271
+
272
+ Bugfixes:
273
+
274
+ - Speedups and fixes for PG::TextDecoder::Identifier and quoting behavior
275
+ - Revert addition of PG::Connection#hostaddr [#202].
276
+ - Fix decoding of fractional timezones and timestamps [#203]
277
+ - Fixes for non-C99 compilers
278
+ - Avoid possible symbol name clash when linking againt static libpq.
279
+
280
+
281
+ == v0.18.1 [2015-01-05] Michael Granger <ged@FaerieMUD.org>
282
+
283
+ Correct the minimum compatible Ruby version to 1.9.3. #199
284
+
285
+
286
+ == v0.18.0 [2015-01-01] Michael Granger <ged@FaerieMUD.org>
287
+
288
+ Bugfixes:
289
+ - Fix OID to Integer mapping (it is unsigned now). #187
290
+ - Fix possible segfault in conjunction with notice receiver. #185
291
+
292
+ Enhancements:
293
+
294
+ - Add an extensible type cast system.
295
+ - A lot of performance improvements.
296
+ - Return frozen String objects for result field names.
297
+ - Add PG::Result#stream_each and #stream_each_row as fast helpers for
298
+ the single row mode.
299
+ - Add Enumerator variant to PG::Result#each and #each_row.
300
+ - Add PG::Connection#conninfo and #hostaddr.
301
+ - Add PG.init_openssl and PG.init_ssl methods.
302
+ - Add PG::Result.inspect
303
+ - Force zero termination for all text strings that are given to libpq.
304
+ It raises an ArgumentError if the string contains a null byte.
305
+ - Update Windows cross build to PostgreSQL 9.3.
306
+
307
+
308
+
1
309
  == v0.17.1 [2013-12-18] Michael Granger <ged@FaerieMUD.org>
2
310
 
3
311
  Bugfixes:
data/Manifest.txt CHANGED
@@ -20,38 +20,54 @@ ext/gvl_wrappers.c
20
20
  ext/gvl_wrappers.h
21
21
  ext/pg.c
22
22
  ext/pg.h
23
+ ext/pg_binary_decoder.c
24
+ ext/pg_binary_encoder.c
25
+ ext/pg_coder.c
23
26
  ext/pg_connection.c
27
+ ext/pg_copy_coder.c
24
28
  ext/pg_errors.c
29
+ ext/pg_record_coder.c
25
30
  ext/pg_result.c
31
+ ext/pg_text_decoder.c
32
+ ext/pg_text_encoder.c
33
+ ext/pg_tuple.c
34
+ ext/pg_type_map.c
35
+ ext/pg_type_map_all_strings.c
36
+ ext/pg_type_map_by_class.c
37
+ ext/pg_type_map_by_column.c
38
+ ext/pg_type_map_by_mri_type.c
39
+ ext/pg_type_map_by_oid.c
40
+ ext/pg_type_map_in_ruby.c
41
+ ext/pg_util.c
42
+ ext/pg_util.h
26
43
  ext/vc/pg.sln
27
44
  ext/vc/pg_18/pg.vcproj
28
45
  ext/vc/pg_19/pg_19.vcproj
29
46
  lib/pg.rb
47
+ lib/pg/basic_type_mapping.rb
48
+ lib/pg/binary_decoder.rb
49
+ lib/pg/coder.rb
30
50
  lib/pg/connection.rb
31
51
  lib/pg/constants.rb
32
52
  lib/pg/exceptions.rb
33
53
  lib/pg/result.rb
34
- sample/array_insert.rb
35
- sample/async_api.rb
36
- sample/async_copyto.rb
37
- sample/async_mixed.rb
38
- sample/check_conn.rb
39
- sample/copyfrom.rb
40
- sample/copyto.rb
41
- sample/cursor.rb
42
- sample/disk_usage_report.rb
43
- sample/issue-119.rb
44
- sample/losample.rb
45
- sample/minimal-testcase.rb
46
- sample/notify_wait.rb
47
- sample/pg_statistics.rb
48
- sample/replication_monitor.rb
49
- sample/test_binary_values.rb
50
- sample/wal_shipper.rb
51
- sample/warehouse_partitions.rb
54
+ lib/pg/text_decoder.rb
55
+ lib/pg/text_encoder.rb
56
+ lib/pg/tuple.rb
57
+ lib/pg/type_map_by_column.rb
52
58
  spec/data/expected_trace.out
53
59
  spec/data/random_binary_data
54
- spec/lib/helpers.rb
60
+ spec/helpers.rb
61
+ spec/pg/basic_type_mapping_spec.rb
55
62
  spec/pg/connection_spec.rb
63
+ spec/pg/connection_sync_spec.rb
56
64
  spec/pg/result_spec.rb
65
+ spec/pg/tuple_spec.rb
66
+ spec/pg/type_map_by_class_spec.rb
67
+ spec/pg/type_map_by_column_spec.rb
68
+ spec/pg/type_map_by_mri_type_spec.rb
69
+ spec/pg/type_map_by_oid_spec.rb
70
+ spec/pg/type_map_in_ruby_spec.rb
71
+ spec/pg/type_map_spec.rb
72
+ spec/pg/type_spec.rb
57
73
  spec/pg_spec.rb
data/README-Windows.rdoc CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  In order to build this extension on MS Windows you will need a couple things.
4
4
 
5
- First, a compiler. For the one click installer this means you should either
6
- use VC++ 6.0 or the compiler that comes with cygwin or mingw if you're
7
- building on that platform.
5
+ First, a compiler. For the one click installer this means you should use
6
+ the DevKit or the compiler that comes with cygwin if you're building on that
7
+ platform.
8
8
 
9
9
  If you've built Ruby yourself, you should use the same compiler to build
10
10
  this library that you used to build Ruby.
@@ -29,39 +29,28 @@ Adjust your path accordingly. BE SURE TO USE THE SHORT PATH NAMES! If you
29
29
  try to use a path with spaces in it, the nmake.exe program will choke.
30
30
 
31
31
 
32
- == Cross compiling for mswin32
32
+ == Building binary 'pg' gems for MS Windows
33
33
 
34
- Using rake-compiler a cross compiled pg gem can be build on a Linux or MacOS X
35
- host for the win32 platform. The generated gem is statically linked against
36
- libpq and libssl. OpenSSL and PostgreSQL are downloaded and compiled from the
37
- sources. There are no runtime dependencies to any but the standard Windows
38
- DLLs.
34
+ Binary gems for windows can be built on Linux, OS-X and even on Windows
35
+ with the help of docker. This is how regular windows gems are built for
36
+ rubygems.org .
39
37
 
40
- Install mingw32 using the instructions in rake-compiler's README.
41
- For Debian/Ubuntu it is <tt>apt-get install gcc-mingw32</tt> .
42
- Use ruby-1.8.7 for the following commands.
38
+ To do this, install boot2docker {on Windows}[https://github.com/boot2docker/windows-installer/releases]
39
+ or {on OS X}[https://github.com/boot2docker/osx-installer/releases] and make
40
+ sure it is started. A native Docker installation is best on Linux.
43
41
 
44
- Download and cross compile ruby 1.8 and 1.9 for win32 with:
42
+ Then run:
45
43
 
46
- rake-compiler cross-ruby VERSION=1.8.7-p352
47
- rake-compiler cross-ruby VERSION=1.9.2-p290
44
+ rake gem:windows
48
45
 
49
- Download and cross compile pg for win32:
50
-
51
- rake cross native gem
52
-
53
- or with custom versions:
54
-
55
- rake cross native gem RUBY_CC_VERSION=1.8.7:1.9.2 \
56
- OPENSSL_VERSION=1.0.0e POSTGRESQL_VERSION=9.1.1
57
-
58
- If everything works, there should be pg-VERSION-x86-mingw32.gem in the pkg
59
- directory.
46
+ This will download a docker image suited for building windows gems, and it
47
+ will download and build OpenSSL and PostgreSQL. Finally the gem is built
48
+ containing binaries for all supported ruby versions.
60
49
 
61
50
 
62
51
  == Reporting Problems
63
52
 
64
- If you have any problems you can submit them via
65
- [the project's issue-tracker][bitbucket]. And submit questions, problems, or
53
+ If you have any problems you can submit them via {the project's
54
+ issue-tracker}[https://github.com/ged/ruby-pg/issues]. And submit questions, problems, or
66
55
  solutions, so that it can be improved.
67
56