excon 0.49.0 → 0.88.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CONTRIBUTORS.md +33 -3
- data/LICENSE.md +1 -1
- data/README.md +77 -7
- data/data/cacert.pem +1279 -1940
- data/excon.gemspec +32 -170
- data/lib/excon/connection.rb +257 -154
- data/lib/excon/constants.rb +44 -16
- data/lib/excon/error.rb +229 -0
- data/lib/excon/extensions/uri.rb +1 -0
- data/lib/excon/headers.rb +5 -3
- data/lib/excon/instrumentors/logging_instrumentor.rb +48 -0
- data/lib/excon/instrumentors/standard_instrumentor.rb +21 -0
- data/lib/excon/middlewares/base.rb +7 -0
- data/lib/excon/middlewares/capture_cookies.rb +2 -1
- data/lib/excon/middlewares/decompress.rb +3 -2
- data/lib/excon/middlewares/escape_path.rb +1 -0
- data/lib/excon/middlewares/expects.rb +8 -1
- data/lib/excon/middlewares/idempotent.rb +27 -3
- data/lib/excon/middlewares/instrumentor.rb +9 -0
- data/lib/excon/middlewares/mock.rb +14 -4
- data/lib/excon/middlewares/redirect_follower.rb +28 -4
- data/lib/excon/middlewares/response_parser.rb +4 -0
- data/lib/excon/pretty_printer.rb +2 -8
- data/lib/excon/response.rb +16 -12
- data/lib/excon/socket.rb +56 -36
- data/lib/excon/ssl_socket.rb +70 -25
- data/lib/excon/test/plugin/server/exec.rb +26 -0
- data/lib/excon/test/plugin/server/puma.rb +23 -0
- data/lib/excon/test/plugin/server/unicorn.rb +38 -0
- data/lib/excon/test/plugin/server/webrick.rb +26 -0
- data/lib/excon/test/server.rb +106 -0
- data/lib/excon/unix_socket.rb +2 -0
- data/lib/excon/utils.rb +65 -10
- data/lib/excon/version.rb +4 -0
- data/lib/excon.rb +35 -20
- metadata +69 -87
- data/Gemfile +0 -19
- data/Gemfile.lock +0 -285
- data/Rakefile +0 -144
- data/benchmarks/class_vs_lambda.rb +0 -50
- data/benchmarks/concat_vs_insert.rb +0 -21
- data/benchmarks/concat_vs_interpolate.rb +0 -21
- data/benchmarks/cr_lf.rb +0 -21
- data/benchmarks/downcase-eq-eq_vs_casecmp.rb +0 -169
- data/benchmarks/excon.rb +0 -69
- data/benchmarks/excon_vs.rb +0 -165
- data/benchmarks/for_vs_array_each.rb +0 -27
- data/benchmarks/for_vs_hash_each.rb +0 -27
- data/benchmarks/has_key-vs-lookup.rb +0 -177
- data/benchmarks/headers_case_sensitivity.rb +0 -83
- data/benchmarks/headers_split_vs_match.rb +0 -34
- data/benchmarks/implicit_block-vs-explicit_block.rb +0 -98
- data/benchmarks/merging.rb +0 -21
- data/benchmarks/single_vs_double_quotes.rb +0 -21
- data/benchmarks/string_ranged_index.rb +0 -87
- data/benchmarks/strip_newline.rb +0 -115
- data/benchmarks/vs_stdlib.rb +0 -82
- data/changelog.txt +0 -959
- data/lib/excon/errors.rb +0 -172
- data/lib/excon/standard_instrumentor.rb +0 -27
- data/tests/authorization_header_tests.rb +0 -33
- data/tests/bad_tests.rb +0 -47
- data/tests/basic_tests.rb +0 -334
- data/tests/complete_responses.rb +0 -31
- data/tests/data/127.0.0.1.cert.crt +0 -14
- data/tests/data/127.0.0.1.cert.key +0 -15
- data/tests/data/excon.cert.crt +0 -14
- data/tests/data/excon.cert.key +0 -15
- data/tests/data/xs +0 -1
- data/tests/errors_tests.rb +0 -58
- data/tests/header_tests.rb +0 -119
- data/tests/middlewares/canned_response_tests.rb +0 -34
- data/tests/middlewares/capture_cookies_tests.rb +0 -34
- data/tests/middlewares/decompress_tests.rb +0 -157
- data/tests/middlewares/escape_path_tests.rb +0 -36
- data/tests/middlewares/idempotent_tests.rb +0 -131
- data/tests/middlewares/instrumentation_tests.rb +0 -312
- data/tests/middlewares/mock_tests.rb +0 -293
- data/tests/middlewares/redirect_follower_tests.rb +0 -80
- data/tests/pipeline_tests.rb +0 -40
- data/tests/proxy_tests.rb +0 -306
- data/tests/query_string_tests.rb +0 -87
- data/tests/rackups/basic.rb +0 -41
- data/tests/rackups/basic.ru +0 -3
- data/tests/rackups/basic_auth.ru +0 -14
- data/tests/rackups/deflater.ru +0 -4
- data/tests/rackups/proxy.ru +0 -18
- data/tests/rackups/query_string.ru +0 -13
- data/tests/rackups/redirecting.ru +0 -23
- data/tests/rackups/redirecting_with_cookie.ru +0 -40
- data/tests/rackups/request_headers.ru +0 -15
- data/tests/rackups/request_methods.ru +0 -21
- data/tests/rackups/response_header.ru +0 -18
- data/tests/rackups/ssl.ru +0 -16
- data/tests/rackups/ssl_mismatched_cn.ru +0 -15
- data/tests/rackups/ssl_verify_peer.ru +0 -16
- data/tests/rackups/streaming.ru +0 -30
- data/tests/rackups/thread_safety.ru +0 -17
- data/tests/rackups/timeout.ru +0 -14
- data/tests/rackups/webrick_patch.rb +0 -34
- data/tests/request_headers_tests.rb +0 -21
- data/tests/request_method_tests.rb +0 -47
- data/tests/request_tests.rb +0 -59
- data/tests/response_tests.rb +0 -197
- data/tests/servers/bad.rb +0 -20
- data/tests/servers/eof.rb +0 -17
- data/tests/servers/error.rb +0 -20
- data/tests/servers/good.rb +0 -350
- data/tests/test_helper.rb +0 -306
- data/tests/thread_safety_tests.rb +0 -39
- data/tests/timeout_tests.rb +0 -12
- data/tests/utils_tests.rb +0 -81
data/Gemfile.lock
DELETED
@@ -1,285 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
excon (0.49.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: http://rubygems.org/
|
8
|
-
specs:
|
9
|
-
activesupport (3.2.6)
|
10
|
-
i18n (~> 0.6)
|
11
|
-
multi_json (~> 1.0)
|
12
|
-
backports (3.6.4)
|
13
|
-
bouncy-castle-java (1.5.0147)
|
14
|
-
chronic (0.6.7)
|
15
|
-
delorean (2.0.0)
|
16
|
-
chronic
|
17
|
-
eventmachine (1.0.4)
|
18
|
-
eventmachine (1.0.4-java)
|
19
|
-
ffi2-generators (0.1.1)
|
20
|
-
formatador (0.2.3)
|
21
|
-
i18n (0.6.0)
|
22
|
-
jruby-openssl (0.8.8)
|
23
|
-
bouncy-castle-java (>= 1.5.0147)
|
24
|
-
json (1.8.2)
|
25
|
-
json (1.8.2-java)
|
26
|
-
kgio (2.9.2)
|
27
|
-
minitest (4.7.5)
|
28
|
-
multi_json (1.3.6)
|
29
|
-
open4 (1.3.0)
|
30
|
-
rack (1.6.0)
|
31
|
-
rack-protection (1.2.0)
|
32
|
-
rack
|
33
|
-
rack-test (0.6.3)
|
34
|
-
rack (>= 1.0)
|
35
|
-
raindrops (0.13.0)
|
36
|
-
rake (0.9.2.2)
|
37
|
-
rdoc (3.12)
|
38
|
-
json (~> 1.4)
|
39
|
-
rubysl (2.0.14)
|
40
|
-
rubysl-abbrev (~> 2.0)
|
41
|
-
rubysl-base64 (~> 2.0)
|
42
|
-
rubysl-benchmark (~> 2.0)
|
43
|
-
rubysl-bigdecimal (~> 2.0)
|
44
|
-
rubysl-cgi (~> 2.0)
|
45
|
-
rubysl-cgi-session (~> 2.0)
|
46
|
-
rubysl-cmath (~> 2.0)
|
47
|
-
rubysl-complex (~> 2.0)
|
48
|
-
rubysl-continuation (~> 2.0)
|
49
|
-
rubysl-coverage (~> 2.0)
|
50
|
-
rubysl-csv (~> 2.0)
|
51
|
-
rubysl-curses (~> 2.0)
|
52
|
-
rubysl-date (~> 2.0)
|
53
|
-
rubysl-delegate (~> 2.0)
|
54
|
-
rubysl-digest (~> 2.0)
|
55
|
-
rubysl-drb (~> 2.0)
|
56
|
-
rubysl-e2mmap (~> 2.0)
|
57
|
-
rubysl-english (~> 2.0)
|
58
|
-
rubysl-enumerator (~> 2.0)
|
59
|
-
rubysl-erb (~> 2.0)
|
60
|
-
rubysl-etc (~> 2.0)
|
61
|
-
rubysl-expect (~> 2.0)
|
62
|
-
rubysl-fcntl (~> 2.0)
|
63
|
-
rubysl-fiber (~> 2.0)
|
64
|
-
rubysl-fileutils (~> 2.0)
|
65
|
-
rubysl-find (~> 2.0)
|
66
|
-
rubysl-forwardable (~> 2.0)
|
67
|
-
rubysl-getoptlong (~> 2.0)
|
68
|
-
rubysl-gserver (~> 2.0)
|
69
|
-
rubysl-io-console (~> 2.0)
|
70
|
-
rubysl-io-nonblock (~> 2.0)
|
71
|
-
rubysl-io-wait (~> 2.0)
|
72
|
-
rubysl-ipaddr (~> 2.0)
|
73
|
-
rubysl-irb (~> 2.0)
|
74
|
-
rubysl-logger (~> 2.0)
|
75
|
-
rubysl-mathn (~> 2.0)
|
76
|
-
rubysl-matrix (~> 2.0)
|
77
|
-
rubysl-mkmf (~> 2.0)
|
78
|
-
rubysl-monitor (~> 2.0)
|
79
|
-
rubysl-mutex_m (~> 2.0)
|
80
|
-
rubysl-net-ftp (~> 2.0)
|
81
|
-
rubysl-net-http (~> 2.0)
|
82
|
-
rubysl-net-imap (~> 2.0)
|
83
|
-
rubysl-net-pop (~> 2.0)
|
84
|
-
rubysl-net-protocol (~> 2.0)
|
85
|
-
rubysl-net-smtp (~> 2.0)
|
86
|
-
rubysl-net-telnet (~> 2.0)
|
87
|
-
rubysl-nkf (~> 2.0)
|
88
|
-
rubysl-observer (~> 2.0)
|
89
|
-
rubysl-open-uri (~> 2.0)
|
90
|
-
rubysl-open3 (~> 2.0)
|
91
|
-
rubysl-openssl (~> 2.0)
|
92
|
-
rubysl-optparse (~> 2.0)
|
93
|
-
rubysl-ostruct (~> 2.0)
|
94
|
-
rubysl-pathname (~> 2.0)
|
95
|
-
rubysl-prettyprint (~> 2.0)
|
96
|
-
rubysl-prime (~> 2.0)
|
97
|
-
rubysl-profile (~> 2.0)
|
98
|
-
rubysl-profiler (~> 2.0)
|
99
|
-
rubysl-pstore (~> 2.0)
|
100
|
-
rubysl-pty (~> 2.0)
|
101
|
-
rubysl-rational (~> 2.0)
|
102
|
-
rubysl-readline (~> 2.0)
|
103
|
-
rubysl-resolv (~> 2.0)
|
104
|
-
rubysl-rexml (~> 2.0)
|
105
|
-
rubysl-rinda (~> 2.0)
|
106
|
-
rubysl-rss (~> 2.0)
|
107
|
-
rubysl-scanf (~> 2.0)
|
108
|
-
rubysl-securerandom (~> 2.0)
|
109
|
-
rubysl-set (~> 2.0)
|
110
|
-
rubysl-shellwords (~> 2.0)
|
111
|
-
rubysl-singleton (~> 2.0)
|
112
|
-
rubysl-socket (~> 2.0)
|
113
|
-
rubysl-stringio (~> 2.0)
|
114
|
-
rubysl-strscan (~> 2.0)
|
115
|
-
rubysl-sync (~> 2.0)
|
116
|
-
rubysl-syslog (~> 2.0)
|
117
|
-
rubysl-tempfile (~> 2.0)
|
118
|
-
rubysl-test-unit (~> 2.0)
|
119
|
-
rubysl-thread (~> 2.0)
|
120
|
-
rubysl-thwait (~> 2.0)
|
121
|
-
rubysl-time (~> 2.0)
|
122
|
-
rubysl-timeout (~> 2.0)
|
123
|
-
rubysl-tmpdir (~> 2.0)
|
124
|
-
rubysl-tsort (~> 2.0)
|
125
|
-
rubysl-un (~> 2.0)
|
126
|
-
rubysl-uri (~> 2.0)
|
127
|
-
rubysl-weakref (~> 2.0)
|
128
|
-
rubysl-webrick (~> 2.0)
|
129
|
-
rubysl-xmlrpc (~> 2.0)
|
130
|
-
rubysl-yaml (~> 2.0)
|
131
|
-
rubysl-zlib (~> 2.0)
|
132
|
-
rubysl-abbrev (2.0.4)
|
133
|
-
rubysl-base64 (2.0.0)
|
134
|
-
rubysl-benchmark (2.0.1)
|
135
|
-
rubysl-bigdecimal (2.0.2)
|
136
|
-
rubysl-cgi (2.0.1)
|
137
|
-
rubysl-cgi-session (2.0.1)
|
138
|
-
rubysl-cmath (2.0.0)
|
139
|
-
rubysl-complex (2.0.0)
|
140
|
-
rubysl-continuation (2.0.0)
|
141
|
-
rubysl-coverage (2.0.3)
|
142
|
-
rubysl-csv (2.0.2)
|
143
|
-
rubysl-english (~> 2.0)
|
144
|
-
rubysl-curses (2.0.0)
|
145
|
-
rubysl-date (2.0.6)
|
146
|
-
rubysl-delegate (2.0.1)
|
147
|
-
rubysl-digest (2.0.3)
|
148
|
-
rubysl-drb (2.0.1)
|
149
|
-
rubysl-e2mmap (2.0.0)
|
150
|
-
rubysl-english (2.0.0)
|
151
|
-
rubysl-enumerator (2.0.0)
|
152
|
-
rubysl-erb (2.0.1)
|
153
|
-
rubysl-etc (2.0.3)
|
154
|
-
ffi2-generators (~> 0.1)
|
155
|
-
rubysl-expect (2.0.0)
|
156
|
-
rubysl-fcntl (2.0.4)
|
157
|
-
ffi2-generators (~> 0.1)
|
158
|
-
rubysl-fiber (2.0.0)
|
159
|
-
rubysl-fileutils (2.0.3)
|
160
|
-
rubysl-find (2.0.1)
|
161
|
-
rubysl-forwardable (2.0.1)
|
162
|
-
rubysl-getoptlong (2.0.0)
|
163
|
-
rubysl-gserver (2.0.0)
|
164
|
-
rubysl-socket (~> 2.0)
|
165
|
-
rubysl-thread (~> 2.0)
|
166
|
-
rubysl-io-console (2.0.0)
|
167
|
-
rubysl-io-nonblock (2.0.0)
|
168
|
-
rubysl-io-wait (2.0.0)
|
169
|
-
rubysl-ipaddr (2.0.0)
|
170
|
-
rubysl-irb (2.0.4)
|
171
|
-
rubysl-e2mmap (~> 2.0)
|
172
|
-
rubysl-mathn (~> 2.0)
|
173
|
-
rubysl-readline (~> 2.0)
|
174
|
-
rubysl-thread (~> 2.0)
|
175
|
-
rubysl-logger (2.0.0)
|
176
|
-
rubysl-mathn (2.0.0)
|
177
|
-
rubysl-matrix (2.1.0)
|
178
|
-
rubysl-e2mmap (~> 2.0)
|
179
|
-
rubysl-mkmf (2.0.1)
|
180
|
-
rubysl-fileutils (~> 2.0)
|
181
|
-
rubysl-shellwords (~> 2.0)
|
182
|
-
rubysl-monitor (2.0.0)
|
183
|
-
rubysl-mutex_m (2.0.0)
|
184
|
-
rubysl-net-ftp (2.0.1)
|
185
|
-
rubysl-net-http (2.0.4)
|
186
|
-
rubysl-cgi (~> 2.0)
|
187
|
-
rubysl-erb (~> 2.0)
|
188
|
-
rubysl-singleton (~> 2.0)
|
189
|
-
rubysl-net-imap (2.0.1)
|
190
|
-
rubysl-net-pop (2.0.1)
|
191
|
-
rubysl-net-protocol (2.0.1)
|
192
|
-
rubysl-net-smtp (2.0.1)
|
193
|
-
rubysl-net-telnet (2.0.0)
|
194
|
-
rubysl-nkf (2.0.1)
|
195
|
-
rubysl-observer (2.0.0)
|
196
|
-
rubysl-open-uri (2.0.0)
|
197
|
-
rubysl-open3 (2.0.0)
|
198
|
-
rubysl-openssl (2.0.4)
|
199
|
-
rubysl-optparse (2.0.1)
|
200
|
-
rubysl-shellwords (~> 2.0)
|
201
|
-
rubysl-ostruct (2.0.4)
|
202
|
-
rubysl-pathname (2.0.0)
|
203
|
-
rubysl-prettyprint (2.0.2)
|
204
|
-
rubysl-prime (2.0.0)
|
205
|
-
rubysl-profile (2.0.0)
|
206
|
-
rubysl-profiler (2.0.1)
|
207
|
-
rubysl-pstore (2.0.0)
|
208
|
-
rubysl-pty (2.0.2)
|
209
|
-
rubysl-rational (2.0.1)
|
210
|
-
rubysl-readline (2.0.2)
|
211
|
-
rubysl-resolv (2.0.0)
|
212
|
-
rubysl-rexml (2.0.2)
|
213
|
-
rubysl-rinda (2.0.0)
|
214
|
-
rubysl-rss (2.0.0)
|
215
|
-
rubysl-scanf (2.0.0)
|
216
|
-
rubysl-securerandom (2.0.0)
|
217
|
-
rubysl-set (2.0.1)
|
218
|
-
rubysl-shellwords (2.0.0)
|
219
|
-
rubysl-singleton (2.0.0)
|
220
|
-
rubysl-socket (2.0.1)
|
221
|
-
rubysl-stringio (2.0.0)
|
222
|
-
rubysl-strscan (2.0.0)
|
223
|
-
rubysl-sync (2.0.0)
|
224
|
-
rubysl-syslog (2.0.1)
|
225
|
-
ffi2-generators (~> 0.1)
|
226
|
-
rubysl-tempfile (2.0.1)
|
227
|
-
rubysl-test-unit (2.0.1)
|
228
|
-
minitest (~> 4.7)
|
229
|
-
rubysl-thread (2.0.2)
|
230
|
-
rubysl-thwait (2.0.0)
|
231
|
-
rubysl-time (2.0.3)
|
232
|
-
rubysl-timeout (2.0.0)
|
233
|
-
rubysl-tmpdir (2.0.0)
|
234
|
-
rubysl-tsort (2.0.1)
|
235
|
-
rubysl-un (2.0.0)
|
236
|
-
rubysl-fileutils (~> 2.0)
|
237
|
-
rubysl-optparse (~> 2.0)
|
238
|
-
rubysl-uri (2.0.0)
|
239
|
-
rubysl-weakref (2.0.0)
|
240
|
-
rubysl-webrick (2.0.0)
|
241
|
-
rubysl-xmlrpc (2.0.0)
|
242
|
-
rubysl-yaml (2.0.3)
|
243
|
-
rubysl-zlib (2.0.1)
|
244
|
-
shindo (0.3.4)
|
245
|
-
formatador (>= 0.1.1)
|
246
|
-
sinatra (1.3.2)
|
247
|
-
rack (~> 1.3, >= 1.3.6)
|
248
|
-
rack-protection (~> 1.2)
|
249
|
-
tilt (~> 1.3, >= 1.3.3)
|
250
|
-
sinatra-contrib (1.3.2)
|
251
|
-
backports (>= 2.0)
|
252
|
-
eventmachine
|
253
|
-
rack-protection
|
254
|
-
rack-test
|
255
|
-
sinatra (~> 1.3.0)
|
256
|
-
tilt (~> 1.3)
|
257
|
-
tilt (1.3.3)
|
258
|
-
unicorn (4.8.3)
|
259
|
-
kgio (~> 2.6)
|
260
|
-
rack
|
261
|
-
raindrops (~> 0.7)
|
262
|
-
|
263
|
-
PLATFORMS
|
264
|
-
java
|
265
|
-
ruby
|
266
|
-
|
267
|
-
DEPENDENCIES
|
268
|
-
activesupport
|
269
|
-
delorean
|
270
|
-
eventmachine (>= 1.0.4)
|
271
|
-
excon!
|
272
|
-
jruby-openssl
|
273
|
-
json (>= 1.8.2)
|
274
|
-
open4
|
275
|
-
rack (~> 1.6)
|
276
|
-
rake
|
277
|
-
rdoc
|
278
|
-
rubysl (~> 2.0)
|
279
|
-
shindo
|
280
|
-
sinatra
|
281
|
-
sinatra-contrib
|
282
|
-
unicorn
|
283
|
-
|
284
|
-
BUNDLED WITH
|
285
|
-
1.11.2
|
data/Rakefile
DELETED
@@ -1,144 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'date'
|
4
|
-
include Rake::DSL
|
5
|
-
#############################################################################
|
6
|
-
#
|
7
|
-
# Helper functions
|
8
|
-
#
|
9
|
-
#############################################################################
|
10
|
-
|
11
|
-
def name
|
12
|
-
@name ||= Dir['*.gemspec'].first.split('.').first
|
13
|
-
end
|
14
|
-
|
15
|
-
def version
|
16
|
-
line = File.read("lib/#{name}/constants.rb")[/^\s*VERSION\s*=\s*.*/]
|
17
|
-
line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
18
|
-
end
|
19
|
-
|
20
|
-
def date
|
21
|
-
Date.today.to_s
|
22
|
-
end
|
23
|
-
|
24
|
-
def rubyforge_project
|
25
|
-
name
|
26
|
-
end
|
27
|
-
|
28
|
-
def gemspec_file
|
29
|
-
"#{name}.gemspec"
|
30
|
-
end
|
31
|
-
|
32
|
-
def gem_file
|
33
|
-
"#{name}-#{version}.gem"
|
34
|
-
end
|
35
|
-
|
36
|
-
def replace_header(head, header_name)
|
37
|
-
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
|
38
|
-
end
|
39
|
-
|
40
|
-
#############################################################################
|
41
|
-
#
|
42
|
-
# Standard tasks
|
43
|
-
#
|
44
|
-
#############################################################################
|
45
|
-
|
46
|
-
require 'shindo/rake'
|
47
|
-
Shindo::Rake.new
|
48
|
-
|
49
|
-
task :default => :tests
|
50
|
-
|
51
|
-
require 'rdoc/task'
|
52
|
-
Rake::RDocTask.new do |rdoc|
|
53
|
-
rdoc.rdoc_dir = 'rdoc'
|
54
|
-
rdoc.title = "#{name} #{version}"
|
55
|
-
rdoc.rdoc_files.include('README*')
|
56
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
57
|
-
end
|
58
|
-
|
59
|
-
desc "Open an irb session preloaded with this library"
|
60
|
-
task :console do
|
61
|
-
sh "irb -rubygems -r ./lib/#{name}.rb"
|
62
|
-
end
|
63
|
-
|
64
|
-
#############################################################################
|
65
|
-
#
|
66
|
-
# Custom tasks (add your own tasks here)
|
67
|
-
#
|
68
|
-
#############################################################################
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
#############################################################################
|
73
|
-
#
|
74
|
-
# Packaging tasks
|
75
|
-
#
|
76
|
-
#############################################################################
|
77
|
-
|
78
|
-
task :release => [:update_certs, :build] do
|
79
|
-
unless `git branch` =~ /^\* master$/
|
80
|
-
puts "You must be on the master branch to release!"
|
81
|
-
exit!
|
82
|
-
end
|
83
|
-
sh "gem install pkg/#{name}-#{version}.gem"
|
84
|
-
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
85
|
-
sh "git tag v#{version}"
|
86
|
-
sh "git push origin master"
|
87
|
-
sh "git push origin v#{version}"
|
88
|
-
sh "gem push pkg/#{name}-#{version}.gem"
|
89
|
-
end
|
90
|
-
|
91
|
-
task :build => :gemspec do
|
92
|
-
sh "mkdir -p pkg"
|
93
|
-
sh "gem build #{gemspec_file}"
|
94
|
-
sh "mv #{gem_file} pkg"
|
95
|
-
end
|
96
|
-
|
97
|
-
task :gemspec => :validate do
|
98
|
-
# read spec file and split out manifest section
|
99
|
-
spec = File.read(gemspec_file)
|
100
|
-
head, manifest, tail = spec.split(" # = MANIFEST =\n")
|
101
|
-
|
102
|
-
# replace name version and date
|
103
|
-
replace_header(head, :name)
|
104
|
-
replace_header(head, :version)
|
105
|
-
replace_header(head, :date)
|
106
|
-
#comment this out if your rubyforge_project has a different name
|
107
|
-
replace_header(head, :rubyforge_project)
|
108
|
-
|
109
|
-
# determine file list from git ls-files
|
110
|
-
files = `git ls-files`.
|
111
|
-
split("\n").
|
112
|
-
sort.
|
113
|
-
reject { |file| file =~ /^\./ }.
|
114
|
-
reject { |file| file =~ /^(rdoc|pkg)/ }.
|
115
|
-
map { |file| " #{file}" }.
|
116
|
-
join("\n")
|
117
|
-
|
118
|
-
# piece file back together and write
|
119
|
-
manifest = " s.files = %w[\n#{files}\n ]\n"
|
120
|
-
spec = [head, manifest, tail].join(" # = MANIFEST =\n")
|
121
|
-
File.open(gemspec_file, 'w') { |io| io.write(spec) }
|
122
|
-
puts "Updated #{gemspec_file}"
|
123
|
-
end
|
124
|
-
|
125
|
-
task :validate do
|
126
|
-
libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
|
127
|
-
unless libfiles.empty?
|
128
|
-
puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
|
129
|
-
exit!
|
130
|
-
end
|
131
|
-
unless Dir['VERSION*'].empty?
|
132
|
-
puts "A `VERSION` file at root level violates Gem best practices."
|
133
|
-
exit!
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
desc "update bundled certs"
|
138
|
-
task :update_certs do
|
139
|
-
require File.join(File.dirname(__FILE__), 'lib', 'excon')
|
140
|
-
File.open(File.join(File.dirname(__FILE__), 'data', 'cacert.pem'), 'w') do |file|
|
141
|
-
data = Excon.get("https://curl.haxx.se/ca/cacert.pem").body
|
142
|
-
file.write(data)
|
143
|
-
end
|
144
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'tach'
|
3
|
-
|
4
|
-
class Concatenator
|
5
|
-
def initialize(string)
|
6
|
-
@string = string
|
7
|
-
end
|
8
|
-
|
9
|
-
def call(data)
|
10
|
-
@string << data
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
string = "0123456789ABCDEF"
|
15
|
-
|
16
|
-
Tach.meter(100_000) do
|
17
|
-
tach('class') do
|
18
|
-
s = ""
|
19
|
-
obj = Concatenator.new(s)
|
20
|
-
10.times { obj.call(string) }
|
21
|
-
end
|
22
|
-
|
23
|
-
tach('lambda') do
|
24
|
-
s = ""
|
25
|
-
obj = lambda {|data| s << data }
|
26
|
-
10.times { obj.call(string) }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]
|
31
|
-
#
|
32
|
-
# +--------+----------+
|
33
|
-
# | tach | total |
|
34
|
-
# +--------+----------+
|
35
|
-
# | class | 1.450284 |
|
36
|
-
# +--------+----------+
|
37
|
-
# | lambda | 2.506496 |
|
38
|
-
# +--------+----------+
|
39
|
-
|
40
|
-
# ruby 1.8.7 (2010-12-23 patchlevel 330) [x86_64-linux]
|
41
|
-
#
|
42
|
-
# +--------+----------+
|
43
|
-
# | tach | total |
|
44
|
-
# +--------+----------+
|
45
|
-
# | class | 1.373917 |
|
46
|
-
# +--------+----------+
|
47
|
-
# | lambda | 2.589384 |
|
48
|
-
# +--------+----------+
|
49
|
-
|
50
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'tach'
|
3
|
-
|
4
|
-
Tach.meter(1_000_000) do
|
5
|
-
tach('concat') do
|
6
|
-
path = 'path'
|
7
|
-
path = '/' << path
|
8
|
-
end
|
9
|
-
tach('insert') do
|
10
|
-
path = 'path'
|
11
|
-
path.insert(0, '/')
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
# +--------+----------+
|
16
|
-
# | tach | total |
|
17
|
-
# +--------+----------+
|
18
|
-
# | insert | 0.974036 |
|
19
|
-
# +--------+----------+
|
20
|
-
# | concat | 0.998904 |
|
21
|
-
# +--------+----------+
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'tach'
|
3
|
-
|
4
|
-
key = 'Content-Length'
|
5
|
-
value = '100'
|
6
|
-
Tach.meter(1_000) do
|
7
|
-
tach('concat') do
|
8
|
-
key << ': ' << value << "\r\n"
|
9
|
-
end
|
10
|
-
tach('interpolate') do
|
11
|
-
"#{key}: value\r\n"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
# +-------------+----------+
|
16
|
-
# | tach | total |
|
17
|
-
# +-------------+----------+
|
18
|
-
# | concat | 0.000902 |
|
19
|
-
# +-------------+----------+
|
20
|
-
# | interpolate | 0.019667 |
|
21
|
-
# +-------------+----------+
|
data/benchmarks/cr_lf.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'tach'
|
3
|
-
|
4
|
-
CR_LF = "\r\n"
|
5
|
-
|
6
|
-
Tach.meter(1_000_000) do
|
7
|
-
tach('constant') do
|
8
|
-
'' << CR_LF
|
9
|
-
end
|
10
|
-
tach('string') do
|
11
|
-
'' << "\r\n"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
# +----------+----------+
|
16
|
-
# | tach | total |
|
17
|
-
# +----------+----------+
|
18
|
-
# | constant | 0.819885 |
|
19
|
-
# +----------+----------+
|
20
|
-
# | string | 0.893602 |
|
21
|
-
# +----------+----------+
|
@@ -1,169 +0,0 @@
|
|
1
|
-
# Copied from my benchmark_hell repo: github.com/sgonyea/benchmark_hell
|
2
|
-
|
3
|
-
require 'benchmark'
|
4
|
-
|
5
|
-
iters = 1000000
|
6
|
-
|
7
|
-
comp = "hello"
|
8
|
-
hello = "HelLo"
|
9
|
-
|
10
|
-
puts 'String#downcase == vs. String#casecmp'
|
11
|
-
Benchmark.bmbm do |x|
|
12
|
-
x.report('String#downcase1') do
|
13
|
-
iters.times.each do
|
14
|
-
hello.downcase == comp
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
x.report('String#downcase2') do
|
19
|
-
iters.times.each do
|
20
|
-
"HelLo".downcase == "hello"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
x.report('String#downcase3') do
|
25
|
-
iters.times.each do
|
26
|
-
var = "HelLo"
|
27
|
-
var.downcase!
|
28
|
-
var == "hello"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
x.report('casecmp1') do
|
33
|
-
iters.times.each do
|
34
|
-
hello.casecmp(comp).zero?
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
x.report('casecmp1-1') do
|
39
|
-
iters.times.each do
|
40
|
-
hello.casecmp(comp) == 0
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
x.report('casecmp2') do
|
45
|
-
iters.times.each do
|
46
|
-
"HelLo".casecmp(comp).zero?
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
x.report('casecmp2-1') do
|
51
|
-
iters.times.each do
|
52
|
-
"HelLo".casecmp(comp) == 0
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
=begin
|
58
|
-
rvm exec bash -c 'echo && echo $RUBY_VERSION && echo && ruby downcase-eq-eq_vs_casecmp.rb'
|
59
|
-
|
60
|
-
jruby-1.5.6
|
61
|
-
|
62
|
-
String#downcase == vs. String#casecmp
|
63
|
-
Rehearsal ----------------------------------------------------
|
64
|
-
String#downcase1 0.461000 0.000000 0.461000 ( 0.387000)
|
65
|
-
String#downcase2 0.269000 0.000000 0.269000 ( 0.269000)
|
66
|
-
String#downcase3 0.224000 0.000000 0.224000 ( 0.224000)
|
67
|
-
casecmp1 0.157000 0.000000 0.157000 ( 0.157000)
|
68
|
-
casecmp1-1 0.153000 0.000000 0.153000 ( 0.153000)
|
69
|
-
casecmp2 0.163000 0.000000 0.163000 ( 0.163000)
|
70
|
-
casecmp2-1 0.163000 0.000000 0.163000 ( 0.163000)
|
71
|
-
------------------------------------------- total: 1.590000sec
|
72
|
-
|
73
|
-
user system total real
|
74
|
-
String#downcase1 0.190000 0.000000 0.190000 ( 0.191000)
|
75
|
-
String#downcase2 0.225000 0.000000 0.225000 ( 0.225000)
|
76
|
-
String#downcase3 0.190000 0.000000 0.190000 ( 0.190000)
|
77
|
-
casecmp1 0.125000 0.000000 0.125000 ( 0.125000)
|
78
|
-
casecmp1-1 0.127000 0.000000 0.127000 ( 0.127000)
|
79
|
-
casecmp2 0.144000 0.000000 0.144000 ( 0.144000)
|
80
|
-
casecmp2-1 0.147000 0.000000 0.147000 ( 0.147000)
|
81
|
-
|
82
|
-
macruby-0.7.1
|
83
|
-
|
84
|
-
String#downcase == vs. String#casecmp
|
85
|
-
Rehearsal ----------------------------------------------------
|
86
|
-
String#downcase1 2.340000 0.040000 2.380000 ( 1.765141)
|
87
|
-
String#downcase2 5.510000 0.100000 5.610000 ( 3.893249)
|
88
|
-
String#downcase3 4.200000 0.080000 4.280000 ( 3.031621)
|
89
|
-
casecmp1 0.270000 0.000000 0.270000 ( 0.267613)
|
90
|
-
casecmp1-1 0.190000 0.000000 0.190000 ( 0.188848)
|
91
|
-
casecmp2 1.450000 0.020000 1.470000 ( 1.027956)
|
92
|
-
casecmp2-1 1.380000 0.030000 1.410000 ( 0.951474)
|
93
|
-
------------------------------------------ total: 15.610000sec
|
94
|
-
|
95
|
-
user system total real
|
96
|
-
String#downcase1 2.350000 0.040000 2.390000 ( 1.774292)
|
97
|
-
String#downcase2 5.890000 0.120000 6.010000 ( 4.214038)
|
98
|
-
String#downcase3 4.530000 0.090000 4.620000 ( 3.286059)
|
99
|
-
casecmp1 0.270000 0.000000 0.270000 ( 0.271119)
|
100
|
-
casecmp1-1 0.190000 0.000000 0.190000 ( 0.189462)
|
101
|
-
casecmp2 1.540000 0.030000 1.570000 ( 1.104751)
|
102
|
-
casecmp2-1 1.440000 0.030000 1.470000 ( 0.999689)
|
103
|
-
|
104
|
-
rbx-head
|
105
|
-
|
106
|
-
String#downcase == vs. String#casecmp
|
107
|
-
Rehearsal ----------------------------------------------------
|
108
|
-
String#downcase1 0.702746 0.005229 0.707975 ( 0.621969)
|
109
|
-
String#downcase2 0.701429 0.001617 0.703046 ( 0.691833)
|
110
|
-
String#downcase3 1.042835 0.002952 1.045787 ( 0.953992)
|
111
|
-
casecmp1 0.654571 0.002239 0.656810 ( 0.480158)
|
112
|
-
casecmp1-1 0.484706 0.001105 0.485811 ( 0.398601)
|
113
|
-
casecmp2 0.564140 0.001579 0.565719 ( 0.545332)
|
114
|
-
casecmp2-1 0.554889 0.001153 0.556042 ( 0.539569)
|
115
|
-
------------------------------------------- total: 4.721190sec
|
116
|
-
|
117
|
-
user system total real
|
118
|
-
String#downcase1 0.491199 0.001081 0.492280 ( 0.493727)
|
119
|
-
String#downcase2 0.631059 0.001018 0.632077 ( 0.629885)
|
120
|
-
String#downcase3 0.968867 0.002504 0.971371 ( 0.976734)
|
121
|
-
casecmp1 0.364496 0.000434 0.364930 ( 0.365262)
|
122
|
-
casecmp1-1 0.373140 0.000562 0.373702 ( 0.374136)
|
123
|
-
casecmp2 0.487644 0.001057 0.488701 ( 0.490302)
|
124
|
-
casecmp2-1 0.469868 0.001178 0.471046 ( 0.472220)
|
125
|
-
|
126
|
-
ruby-1.8.7-p330
|
127
|
-
|
128
|
-
String#downcase == vs. String#casecmp
|
129
|
-
Rehearsal ----------------------------------------------------
|
130
|
-
String#downcase1 0.780000 0.000000 0.780000 ( 0.783979)
|
131
|
-
String#downcase2 0.950000 0.000000 0.950000 ( 0.954109)
|
132
|
-
String#downcase3 0.960000 0.000000 0.960000 ( 0.960554)
|
133
|
-
casecmp1 0.440000 0.000000 0.440000 ( 0.442546)
|
134
|
-
casecmp1-1 0.490000 0.000000 0.490000 ( 0.487795)
|
135
|
-
casecmp2 0.530000 0.000000 0.530000 ( 0.535819)
|
136
|
-
casecmp2-1 0.570000 0.000000 0.570000 ( 0.574653)
|
137
|
-
------------------------------------------- total: 4.720000sec
|
138
|
-
|
139
|
-
user system total real
|
140
|
-
String#downcase1 0.780000 0.000000 0.780000 ( 0.780692)
|
141
|
-
String#downcase2 0.980000 0.010000 0.990000 ( 0.982925)
|
142
|
-
String#downcase3 0.960000 0.000000 0.960000 ( 0.961501)
|
143
|
-
casecmp1 0.440000 0.000000 0.440000 ( 0.444528)
|
144
|
-
casecmp1-1 0.490000 0.000000 0.490000 ( 0.487437)
|
145
|
-
casecmp2 0.540000 0.000000 0.540000 ( 0.537686)
|
146
|
-
casecmp2-1 0.570000 0.000000 0.570000 ( 0.574253)
|
147
|
-
|
148
|
-
ruby-1.9.2-p136
|
149
|
-
|
150
|
-
String#downcase == vs. String#casecmp
|
151
|
-
Rehearsal ----------------------------------------------------
|
152
|
-
String#downcase1 0.750000 0.000000 0.750000 ( 0.750523)
|
153
|
-
String#downcase2 1.190000 0.000000 1.190000 ( 1.193346)
|
154
|
-
String#downcase3 1.030000 0.010000 1.040000 ( 1.036435)
|
155
|
-
casecmp1 0.640000 0.000000 0.640000 ( 0.640327)
|
156
|
-
casecmp1-1 0.480000 0.000000 0.480000 ( 0.484709) # With all this crap running, some flukes pop out
|
157
|
-
casecmp2 0.820000 0.000000 0.820000 ( 0.822223)
|
158
|
-
casecmp2-1 0.660000 0.000000 0.660000 ( 0.664190)
|
159
|
-
------------------------------------------- total: 5.580000sec
|
160
|
-
|
161
|
-
user system total real
|
162
|
-
String#downcase1 0.760000 0.000000 0.760000 ( 0.759816)
|
163
|
-
String#downcase2 1.150000 0.010000 1.160000 ( 1.150792)
|
164
|
-
String#downcase3 1.000000 0.000000 1.000000 ( 1.005549)
|
165
|
-
casecmp1 0.650000 0.000000 0.650000 ( 0.644021)
|
166
|
-
casecmp1-1 0.490000 0.000000 0.490000 ( 0.494456)
|
167
|
-
casecmp2 0.820000 0.000000 0.820000 ( 0.817689)
|
168
|
-
casecmp2-1 0.680000 0.000000 0.680000 ( 0.685121)
|
169
|
-
=end
|