muxer 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/lib/muxer/multiplexer.rb +37 -8
- data/lib/muxer/request.rb +20 -9
- data/lib/muxer/version.rb +1 -1
- data/muxer.gemspec +2 -0
- data/spec/cassettes/muxer/can_have_a_request_fail.yml +282 -0
- data/spec/cassettes/muxer/makes_a_web_request.yml +282 -0
- data/spec/cassettes/muxer/makes_multiple_web_requests.yml +338 -0
- data/spec/muxer/request_spec.rb +2 -2
- data/spec/muxer_spec.rb +35 -3
- data/spec/spec_helper.rb +7 -2
- metadata +36 -2
@@ -0,0 +1,338 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://www.rubydoc.info/
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Type:
|
16
|
+
- text/html;charset=utf-8
|
17
|
+
Last-Modified:
|
18
|
+
- Tue, 07 Apr 2015 12:18:27 GMT
|
19
|
+
X-Xss-Protection:
|
20
|
+
- 1; mode=block
|
21
|
+
X-Content-Type-Options:
|
22
|
+
- nosniff
|
23
|
+
X-Frame-Options:
|
24
|
+
- SAMEORIGIN
|
25
|
+
Content-Length:
|
26
|
+
- '19885'
|
27
|
+
Accept-Ranges:
|
28
|
+
- bytes
|
29
|
+
Date:
|
30
|
+
- Tue, 07 Apr 2015 12:36:07 GMT
|
31
|
+
X-Varnish:
|
32
|
+
- 773428516 773417265
|
33
|
+
Age:
|
34
|
+
- '1060'
|
35
|
+
Via:
|
36
|
+
- 1.1 varnish
|
37
|
+
Connection:
|
38
|
+
- close
|
39
|
+
X-Cache-Status:
|
40
|
+
- HIT
|
41
|
+
body:
|
42
|
+
encoding: UTF-8
|
43
|
+
string: "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html>\n
|
44
|
+
\ <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"
|
45
|
+
/>\n <title>RubyDoc.info: Documenting RubyGems, Stdlib, and GitHub Projects</title>\n
|
46
|
+
\ <link rel=\"stylesheet\" href=\"/css/style.css\" type=\"text/css\" media=\"screen\"
|
47
|
+
charset=\"utf-8\" />\n <link rel=\"stylesheet\" href=\"/css/custom.css\"
|
48
|
+
type=\"text/css\" media=\"screen\" charset=\"utf-8\" />\n <link rel=\"stylesheet\"
|
49
|
+
href=\"/css/projects.css\" type=\"text/css\" media=\"screen\" charset=\"utf-8\"
|
50
|
+
/>\n <script type=\"text/javascript\" charset=\"utf-8\" src=\"/js/jquery.js\"></script>\n
|
51
|
+
\ <script type=\"text/javascript\" charset=\"utf-8\" src=\"/js/project_checkout.js\"></script>\n
|
52
|
+
\ <script type=\"text/javascript\">\n function searchClick() {\n searchPrompt
|
53
|
+
= $('#docSearch').val();\n\n $('#docSearch').focus(function() {\n if
|
54
|
+
($(this).val().match(/^Search/)) {\n $(this).val('');\n }\n
|
55
|
+
\ });\n $('#docSearch').blur(function() {\n if ($(this).val()
|
56
|
+
== '') {\n $(this).val(searchPrompt);\n }\n });\n
|
57
|
+
\ }\n\n function aboutLink() {\n $('#about').click(function()
|
58
|
+
{\n if ($('#info').is(':hidden')) { $('#checkout').hide(); $('#tender_window').hide();
|
59
|
+
$('#info').fadeIn('fast'); }\n else $('#info').fadeOut('fast');\n
|
60
|
+
\ return false;\n });\n }\n\n function checkoutLink()
|
61
|
+
{\n $('#new_checkout').click(function() {\n if ($('#checkout').is(':hidden'))
|
62
|
+
{ $('#info').hide(); $('#tender_window').hide(); $('#checkout').fadeIn('fast');
|
63
|
+
}\n else $('#checkout').fadeOut('fast');\n return false;\n
|
64
|
+
\ });\n }\n\n function helpLink() {\n $('#help').click(function()
|
65
|
+
{\n if ($('#tender_window').is(':visible')) {\n $('#tender_window').hide();\n
|
66
|
+
\ } else {\n $('#help_tender').click();\n $('#info').hide();\n
|
67
|
+
\ $('#checkout').hide();\n }\n });\n }\n\n
|
68
|
+
\ function reloadProject() {\n $('.libraries .project_reload').click(function()
|
69
|
+
{\n var proj = $(this).parent().find('a:first-child').text();\n $('#url').val(\"git://github.com/\"
|
70
|
+
+ proj);\n $('#commit').val('');\n $('#checkout_form').submit();\n
|
71
|
+
\ $(this).find('img').attr('src', '/images/loading.gif');\n return
|
72
|
+
false;\n });\n }\n\n function saveIndex(url) {\n var
|
73
|
+
date = new Date();\n date.setDate(date.getDate() + (url == '' ? -999
|
74
|
+
: 99999));\n document.cookie = \"defaultIndex=\" + escape(url) + \";expires=\"
|
75
|
+
+ date.toUTCString();\n }\n\n $(searchClick);\n $(aboutLink);\n
|
76
|
+
\ $(checkoutLink);\n $(helpLink);\n $(reloadProject);\n </script>\n
|
77
|
+
\ </head>\n <body>\n <img src=\"/images/logo.gif\" width=\"1\" height=\"1\"
|
78
|
+
style=\"display: none\" alt=\"Rubydoc.info\" />\n <a id=\"learn_yard\"
|
79
|
+
href=\"http://yardoc.org\" title=\"Learn More About YARD\"><img src=\"/images/learn.png\"
|
80
|
+
alt=\"Learn More About YARD\" /></a>\n <noscript>\n <style type=\"text/css\"
|
81
|
+
media=\"screen\">\n body { margin: 0; padding: 0;}\n #logo,
|
82
|
+
#content { padding: 0 20px; }\n #noscript { background: #111; color:
|
83
|
+
#fff; padding: 10px 20px; }\n #top_nav { top: 48px; }\n </style>\n
|
84
|
+
\ <div id=\"noscript\"><strong>It seems you've disabled Javascript.</strong>\n
|
85
|
+
\ That's okay, but you might run into some problems. We try to make
|
86
|
+
things work without script support\n as much as possible, but sometimes
|
87
|
+
it needs to be used. We apologize for any inconvenience and hope you understand.</div>\n
|
88
|
+
\ </noscript>\n <div id=\"logo\">\n <h1><a href=\"/\">RubyDoc.info</a>
|
89
|
+
<small>YARD Documentation Server</small></h1>\n </div>\n\n \n <p
|
90
|
+
id=\"notice\">\n <strong>We need your help!</strong>\n We just
|
91
|
+
rolled out our new frameless templates for library docs.\n If something
|
92
|
+
doesn't look right on your desktop or mobile device, please\n <a href=\"#\"
|
93
|
+
onclick=\"$('#help_tender').click(); return false;\">let us know</a>.\n </div>\n
|
94
|
+
\ \n\n <ul id=\"top_nav\">\n <li><a id=\"new_checkout\" href=\"#\">Add
|
95
|
+
Project</a></li>\n <li><a id=\"about\" href=\"#\">About</a></li>\n <li><a
|
96
|
+
id=\"help\" href=\"#\">Help</a></li>\n </ul>\n <a id=\"help_tender\"
|
97
|
+
href=\"#\" style=\"display:none;\"></a>\n <div class=\"clear\"></div>\n\n
|
98
|
+
\ <div id=\"info\">\n <p>\n <strong>RubyDoc.info</strong> is
|
99
|
+
your source for open source Ruby library documentation,\n generating
|
100
|
+
fresh docs for Gems and popular Git repositories.\n </p>\n <p>\n
|
101
|
+
\ This site uses <a href=\"http://yardoc.org\">YARD</a> to generate
|
102
|
+
docs on the fly.\n To make your docs look better, you can check out
|
103
|
+
some of YARD's\n <a href=\"/gems/yard/file/docs/WhatsNew.md\">killer
|
104
|
+
features</a>.\n </p>\n <p>\n <strong>We have DISQUS integration!</strong>
|
105
|
+
Click the <em>permalink</em>\n (<a href=\"/gems/yard/YARD/Templates/Engine.render\">like
|
106
|
+
this one</a>)\n on a method to see user comments on a method page.\n
|
107
|
+
\ </p>\n <p>\n Looking for a <a href=\"http://github.com\">GitHub</a>\n
|
108
|
+
\ <a href=\"http://help.github.com/post-receive-hooks/\">post-receive
|
109
|
+
hook</a>?\n Use <tt>http://www.rubydoc.info/checkout</tt>.\n </p>\n
|
110
|
+
\ <p>\n <small>\n RubyDoc.info was made possible by <strong>Loren
|
111
|
+
Segal</strong> and <strong>Nick Plante</strong>, with help from a <a href=\"http://groups.google.com/group/yardoc\">community</a>
|
112
|
+
of <a href=\"http://github.com/lsegal/rubydoc.info\">friendly contributors</a>.\n
|
113
|
+
\ </small>\n </p>\n </div>\n\n <script type=\"text/javascript\"
|
114
|
+
charset=\"utf-8\">\n $(function() {\n if (document.referrer) {\n var
|
115
|
+
refurl = document.referrer;\n var re = new RegExp(\"^\" + window.location.protocol
|
116
|
+
+ \"//\" + window.location.host + \"/\");\n if (refurl.match(re)) {\n
|
117
|
+
\ saveIndex('');\n return;\n }\n }\n\n var list =
|
118
|
+
document.cookie.split(/\\s*;\\s*/);\n for (var i = 0; i < list.length;
|
119
|
+
i++) {\n var key = list[i].split('=', 1)[0];\n if (key == 'defaultIndex')
|
120
|
+
{\n var name = list[i].substr(key.length + 1);\n window.location
|
121
|
+
= '/' + name;\n saveIndex('');\n return;\n }\n }\n });\n</script>\n\n<div
|
122
|
+
id=\"content\">\n <nav>\n <ul id=\"navigation\">\n <li><a href=\"/featured\">Featured</a></li>\n
|
123
|
+
\ <li><a href=\"/stdlib\">Stdlib</a></li>\n <li><a href=\"/gems\">RubyGems</a></li>\n
|
124
|
+
\ <li class=\"selected\">GitHub</li>\n <li class=\"search\"><form action=\"/find/github\"
|
125
|
+
method=\"GET\"><input type=\"text\" id=\"docSearch\" name=\"q\" value=\"Search
|
126
|
+
GitHub Projects\"/></form></li>\n </ul>\n </nav>\n\n \n <h2>Featured Libraries</h2>\n
|
127
|
+
\ <ul class=\"libraries\">\n \n <li class=\"r1\">\n \n \n
|
128
|
+
\ <a href=\"/gems/yard/0.8.7.6\">yard</a>\n \n <small>(0.8.7.6,\n
|
129
|
+
\ <a href=\"/gems/yard/0.8.7.5\">0.8.7.5</a>, <a href=\"/gems/yard/0.8.7.4\">0.8.7.4</a>,
|
130
|
+
<a href=\"/gems/yard/0.8.7.3\">0.8.7.3</a>, <a href=\"/gems/yard/0.8.7.2\">0.8.7.2</a>)</small>\n
|
131
|
+
\ \n </li>\n \n <li class=\"r2\">\n \n \n <a href=\"/docs/rails/4.1.7\">rails</a>\n
|
132
|
+
\ \n <small>(4.1.7,\n <a href=\"/docs/rails/4.0.0\">4.0.0</a>,
|
133
|
+
<a href=\"/docs/rails/3.2.8\">3.2.8</a>, <a href=\"/docs/rails/3.1.1\">3.1.1</a>,
|
134
|
+
<a href=\"/docs/rails/3.0.0\">3.0.0</a>)</small>\n \n </li>\n \n
|
135
|
+
\ </ul>\n \n\n <h2>Recently Updated GitHub Projects</h2>\n <ul class=\"alpha_index\">\n
|
136
|
+
\ \n <li><a href=\"/github/~a\">A</a></li>\n \n <li><a href=\"/github/~b\">B</a></li>\n
|
137
|
+
\ \n <li><a href=\"/github/~c\">C</a></li>\n \n <li><a href=\"/github/~d\">D</a></li>\n
|
138
|
+
\ \n <li><a href=\"/github/~e\">E</a></li>\n \n <li><a href=\"/github/~f\">F</a></li>\n
|
139
|
+
\ \n <li><a href=\"/github/~g\">G</a></li>\n \n <li><a href=\"/github/~h\">H</a></li>\n
|
140
|
+
\ \n <li><a href=\"/github/~i\">I</a></li>\n \n <li><a href=\"/github/~j\">J</a></li>\n
|
141
|
+
\ \n <li><a href=\"/github/~k\">K</a></li>\n \n <li><a href=\"/github/~l\">L</a></li>\n
|
142
|
+
\ \n <li><a href=\"/github/~m\">M</a></li>\n \n <li><a href=\"/github/~n\">N</a></li>\n
|
143
|
+
\ \n <li><a href=\"/github/~o\">O</a></li>\n \n <li><a href=\"/github/~p\">P</a></li>\n
|
144
|
+
\ \n <li><a href=\"/github/~q\">Q</a></li>\n \n <li><a href=\"/github/~r\">R</a></li>\n
|
145
|
+
\ \n <li><a href=\"/github/~s\">S</a></li>\n \n <li><a href=\"/github/~t\">T</a></li>\n
|
146
|
+
\ \n <li><a href=\"/github/~u\">U</a></li>\n \n <li><a href=\"/github/~v\">V</a></li>\n
|
147
|
+
\ \n <li><a href=\"/github/~w\">W</a></li>\n \n <li><a href=\"/github/~x\">X</a></li>\n
|
148
|
+
\ \n <li><a href=\"/github/~y\">Y</a></li>\n \n <li><a href=\"/github/~z\">Z</a></li>\n
|
149
|
+
\ \n <li class=\"selected\">Latest</li>\n </ul>\n\n <style type=\"text/css\"
|
150
|
+
media=\"screen\">\n #top_nav #new_checkout { display: block; }\n</style>\n<div
|
151
|
+
id=\"checkout\">\n <h2>Add your own project</h2>\n <small class=\"example\">(eg.
|
152
|
+
git://github.com/lsegal/yard.git)</small>\n <form id=\"checkout_form\" action=\"/checkout\"
|
153
|
+
method=\"post\">\n <input class=\"url\" type=\"text\" id=\"url\" name=\"url\"
|
154
|
+
placeholder=\"git://github.com/username/project\" />\n <div class=\"loadicon\"></div>\n
|
155
|
+
\ <input type=\"hidden\" id=\"scheme\" name=\"scheme\" value=\"git\" />\n
|
156
|
+
\ <br/>\n <small>Commit (optional): <input type=\"text\" id=\"commit\"
|
157
|
+
name=\"commit\" value=\"\" /></small>\n <input type=\"submit\" id=\"submit\"
|
158
|
+
value=\"Go\" />\n </form>\n <script type=\"text/javascript\" charset=\"utf-8\">\n
|
159
|
+
\ if (jQuery.browser.safari) $('#checkout_form #commit').css('width', '122px');\n
|
160
|
+
\ </script>\n</div>\n\n <ul class=\"libraries\">\n \n \n \n <li>\n
|
161
|
+
\ <a href=\"/github/pwnall/webkit_remote/master\"><strong>pwnall/webkit_remote</strong></a>\n
|
162
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
163
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/pwnall/webkit_remote\"
|
164
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
165
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
166
|
+
\ <a href=\"/github/fazibear/gruby/master\"><strong>fazibear/gruby</strong></a>\n
|
167
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
168
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/fazibear/gruby\"
|
169
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
170
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
171
|
+
\ <a href=\"/github/ReactiveX/Rx.rb/master\"><strong>ReactiveX/Rx.rb</strong></a>\n
|
172
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
173
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/ReactiveX/Rx.rb\"
|
174
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
175
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
176
|
+
\ <a href=\"/github/metaskills/pdf-writer/master\"><strong>metaskills/pdf-writer</strong></a>\n
|
177
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
178
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/metaskills/pdf-writer\"
|
179
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
180
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
181
|
+
\ <a href=\"/github/robotarmy/acts_as_status_for/master\"><strong>robotarmy/acts_as_status_for</strong></a>\n
|
182
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
183
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/robotarmy/acts_as_status_for\"
|
184
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
185
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
186
|
+
\ <a href=\"/github/dlt/yahoo_weatherman/master\"><strong>dlt/yahoo_weatherman</strong></a>\n
|
187
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
188
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/dlt/yahoo_weatherman\"
|
189
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
190
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
191
|
+
\ <a href=\"/github/brickrb/brick/master\"><strong>brickrb/brick</strong></a>\n
|
192
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
193
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/brickrb/brick\"
|
194
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
195
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
196
|
+
\ <a href=\"/github/step1profit/inde_struct/master\"><strong>step1profit/inde_struct</strong></a>\n
|
197
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
198
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/step1profit/inde_struct\"
|
199
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
200
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
201
|
+
\ <a href=\"/github/fornellas/command_utils/master\"><strong>fornellas/command_utils</strong></a>\n
|
202
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
203
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/fornellas/command_utils\"
|
204
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
205
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
206
|
+
\ <a href=\"/github/buren/site_mapper/master\"><strong>buren/site_mapper</strong></a>\n
|
207
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
208
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/buren/site_mapper\"
|
209
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
210
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
211
|
+
\ <a href=\"/github/buren/wayback_archiver/master\"><strong>buren/wayback_archiver</strong></a>\n
|
212
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
213
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/buren/wayback_archiver\"
|
214
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
215
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
216
|
+
\ <a href=\"/github/jphastings/sinatra-swagger/master\"><strong>jphastings/sinatra-swagger</strong></a>\n
|
217
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
218
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/jphastings/sinatra-swagger\"
|
219
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
220
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
221
|
+
\ <a href=\"/github/jch/html-pipeline/master\"><strong>jch/html-pipeline</strong></a>\n
|
222
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
223
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/jch/html-pipeline\"
|
224
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
225
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
226
|
+
\ <a href=\"/github/fractalsoft/diacritics/master\"><strong>fractalsoft/diacritics</strong></a>\n
|
227
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
228
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/fractalsoft/diacritics\"
|
229
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
230
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
231
|
+
\ <a href=\"/github/guard/guard-compass/master\"><strong>guard/guard-compass</strong></a>\n
|
232
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
233
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/guard/guard-compass\"
|
234
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
235
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
236
|
+
\ <a href=\"/github/locomotivecms/engine/master\"><strong>locomotivecms/engine</strong></a>\n
|
237
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
238
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/locomotivecms/engine\"
|
239
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
240
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
241
|
+
\ <a href=\"/github/troessner/transitions/master\"><strong>troessner/transitions</strong></a>\n
|
242
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
243
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/troessner/transitions\"
|
244
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
245
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
246
|
+
\ <a href=\"/github/kenjij/subaru/master\"><strong>kenjij/subaru</strong></a>\n
|
247
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
248
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/kenjij/subaru\"
|
249
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
250
|
+
/></a>\n <small>(master)</small>\n </li>\n \n \n <li>\n
|
251
|
+
\ <a href=\"/github/danielpclark/PolyBelongsTo/730c15\"><strong>danielpclark/PolyBelongsTo</strong></a>\n
|
252
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
253
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/danielpclark/PolyBelongsTo\"
|
254
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
255
|
+
/></a>\n <small>(730c15)</small>\n </li>\n \n \n <li>\n
|
256
|
+
\ <a href=\"/github/mvz/ruby-gir-ffi/master\"><strong>mvz/ruby-gir-ffi</strong></a>\n
|
257
|
+
\ <a href=\"#\" class=\"project_reload\" title=\"Reload this project\"><img
|
258
|
+
class=\"icon reload\" src=\"/images/reload.png\" /></a>\n <a href=\"http://github.com/mvz/ruby-gir-ffi\"
|
259
|
+
title=\"View this project on GitHub\"><img class=\"icon github\" src=\"/images/git.png\"
|
260
|
+
/></a>\n <small>(master)</small>\n </li>\n \n </ul>\n\n</div>\n\n\n\n
|
261
|
+
\ <div id=\"footer\">\n <a href=\"http://github.com/lsegal/rubydoc.info\">RubyDoc.info</a>
|
262
|
+
is powered by <a href=\"http://yardoc.org/\">yard</a> 0.8.7.6 (ruby-2.1.4)\n
|
263
|
+
\ \n <div class=\"sponsor\">\n <p>Sponsored by</p>\n \n
|
264
|
+
\ <a href=\"http://linode.com\"><img src=\"/images/sponsor/linode.com.png\"
|
265
|
+
alt=\"Sponsored by linode.com\"/></a>\n \n <a href=\"http://dockyard.com\"><img
|
266
|
+
src=\"/images/sponsor/dockyard.com.png\" alt=\"Sponsored by dockyard.com\"/></a>\n
|
267
|
+
\ \n </div>\n \n </div>\n \n <script type=\"text/javascript\"
|
268
|
+
charset=\"utf-8\">\n Tender = {\n hideToggle: true,\n widgetToggles:
|
269
|
+
[document.getElementById('help_tender')]\n }\n </script>\n <script
|
270
|
+
src=\"https://rubydoc.tenderapp.com/tender_widget.js\" type=\"text/javascript\"></script>\n
|
271
|
+
\ \n </body>\n\n \n <script src=\"http://static.getclicky.com/js\"
|
272
|
+
type=\"text/javascript\"></script>\n <script type=\"text/javascript\">clicky.init(246206);</script>\n
|
273
|
+
\ <noscript><p><img alt=\"Clicky\" width=\"1\" height=\"1\" src=\"http://static.getclicky.com/246206ns.gif\"
|
274
|
+
/></p></noscript>\n \n\n \n <script>\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n
|
275
|
+
\ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n
|
276
|
+
\ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n
|
277
|
+
\ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n
|
278
|
+
\ ga('create', 'UA-7172246-5', 'auto');\n ga('send', 'pageview');\n </script>\n
|
279
|
+
\ \n</html>\n"
|
280
|
+
http_version:
|
281
|
+
recorded_at: Tue, 07 Apr 2015 12:36:08 GMT
|
282
|
+
- request:
|
283
|
+
method: get
|
284
|
+
uri: https://www.google.com/
|
285
|
+
body:
|
286
|
+
encoding: US-ASCII
|
287
|
+
string: ''
|
288
|
+
headers: {}
|
289
|
+
response:
|
290
|
+
status:
|
291
|
+
code: 200
|
292
|
+
message: OK
|
293
|
+
headers:
|
294
|
+
Date:
|
295
|
+
- Tue, 07 Apr 2015 12:36:07 GMT
|
296
|
+
Expires:
|
297
|
+
- '-1'
|
298
|
+
Cache-Control:
|
299
|
+
- private, max-age=0
|
300
|
+
Content-Type:
|
301
|
+
- text/html; charset=ISO-8859-1
|
302
|
+
Set-Cookie:
|
303
|
+
- NID=67=jOPCSGbiqymBn-WRNl1fC1fyS7AtmrdaPnGMXXQomDH2AJpcZE9kroVVObhRBambJVtXBBJMhg1r9IiyqHWyEVu9jFRmYox9TokbO6XbZqYBepvVtYrueI_876S6s9fN;
|
304
|
+
expires=Wed, 07-Oct-2015 12:36:07 GMT; path=/; domain=.google.com; HttpOnly
|
305
|
+
- PREF=ID=d4b8300eaac3bdcc:FF=0:TM=1428410167:LM=1428410167:S=CgUFKBnEwR-HowyN;
|
306
|
+
expires=Thu, 06-Apr-2017 12:36:07 GMT; path=/; domain=.google.com
|
307
|
+
P3p:
|
308
|
+
- CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657
|
309
|
+
for more info."
|
310
|
+
Server:
|
311
|
+
- gws
|
312
|
+
X-Xss-Protection:
|
313
|
+
- 1; mode=block
|
314
|
+
X-Frame-Options:
|
315
|
+
- SAMEORIGIN
|
316
|
+
Alternate-Protocol:
|
317
|
+
- 443:quic,p=0.5
|
318
|
+
Accept-Ranges:
|
319
|
+
- none
|
320
|
+
Vary:
|
321
|
+
- Accept-Encoding
|
322
|
+
Connection:
|
323
|
+
- close
|
324
|
+
body:
|
325
|
+
encoding: UTF-8
|
326
|
+
string: |-
|
327
|
+
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for." name="description"><meta content="noodp" name="robots"><meta content="/images/google_favicon_128.png" itemprop="image"><title>Google</title><script>(function(){window.google={kEI:'N88jVZCbLsqrgwT2s4GQCw',kEXPI:'3700261,3700362,3700366,4011559,4017578,4020347,4028717,4028932,4029050,4029402,4029515,4029815,4030092,4030124,4030440,4031242,4031304,4031391,4031572,4031608,4031622,4031627,4031713,4031790,4031804,4032059,4032126,4032141,4032480,4032500,8300096,8500394,8500947,8501247,8501295,8501313,8501350,8501393,10200083,10201002',authuser:0,kSID:'c9c918f0_10'};google.kHL='en';})();(function(){google.lc=[];google.li=0;google.getEI=function(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));)a=a.parentNode;return b||google.kEI};google.getLEI=function(a){for(var b=null;a&&(!a.getAttribute||!(b=a.getAttribute("leid")));)a=a.parentNode;return b};google.https=function(){return"https:"==window.location.protocol};google.ml=function(){};google.time=function(){return(new Date).getTime()};google.log=function(a,b,e,f,l){var d=new Image,h=google.lc,g=google.li,c="",m=google.ls||"";d.onerror=d.onload=d.onabort=function(){delete h[g]};h[g]=d;if(!e&&-1==b.search("&ei=")){var k=google.getEI(f),c="&ei="+k;-1==b.search("&lei=")&&((f=google.getLEI(f))?c+="&lei="+f:k!=google.kEI&&(c+="&lei="+google.kEI))}a=e||"/"+(l||"gen_204")+"?atyp=i&ct="+a+"&cad="+b+c+m+"&zx="+google.time();/^http:/i.test(a)&&google.https()?(google.ml(Error("a"),!1,{src:a,glmm:1}),delete h[g]):(window.google&&window.google.vel&&
|
328
|
+
window.google.vel.lu&&window.google.vel.lu(a),d.src=a,google.li=g+1)};google.y={};google.x=function(a,b){google.y[a.id]=[a,b];return!1};google.load=function(a,b,e){google.x({id:a+n++},function(){google.load(a,b,e)})};var n=0;})();google.kCSI={};var _gjwl=location;function _gjuc(){var a=_gjwl.href.indexOf("#");if(0<=a&&(a=_gjwl.href.substring(a),0<a.indexOf("&q=")||0<=a.indexOf("#q="))&&(a=a.substring(1),-1==a.indexOf("#"))){for(var d=0;d<a.length;){var b=d;"&"==a.charAt(b)&&++b;var c=a.indexOf("&",b);-1==c&&(c=a.length);b=a.substring(b,c);if(0==b.indexOf("fp="))a=a.substring(0,d)+a.substring(c,a.length),c=d;else if("cad=h"==b)return 0;d=c}_gjwl.href="/search?"+a+"&cad=h";return 1}return 0}
|
329
|
+
function _gjh(){!_gjuc()&&window.google&&google.x&&google.x({id:"GJH"},function(){google.nav&&google.nav.gjh&&google.nav.gjh()})};window._gjh&&_gjh();</script><style>#gbar,#guser{font-size:13px;padding-top:1px !important;}#gbar{height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}@media all{.gb1{height:22px;margin-right:.5em;vertical-align:top}#gbar{float:left}}a.gb1,a.gb4{text-decoration:underline !important}a.gb1,a.gb4{color:#00c !important}.gbi .gb4{color:#dd8e27 !important}.gbf .gb4{color:#900 !important}</style><style>body,td,a,p,.h{font-family:arial,sans-serif}body{margin:0;overflow-y:scroll}#gog{padding:3px 8px 0}td{line-height:.8em}.gac_m td{line-height:17px}form{margin-bottom:20px}.h{color:#36c}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}em{font-weight:bold;font-style:normal}.lst{height:25px;width:496px}.gsfi,.lst{font:18px arial,sans-serif}.gsfs{font:17px arial,sans-serif}.ds{display:inline-box;display:inline-block;margin:3px 0 4px;margin-left:4px}input{font-family:inherit}a.gb1,a.gb2,a.gb3,a.gb4{color:#11c !important}body{background:#fff;color:black}a{color:#11c;text-decoration:none}a:hover,a:active{text-decoration:underline}.fl a{color:#36c}a:visited{color:#551a8b}a.gb1,a.gb4{text-decoration:underline}a.gb3:hover{text-decoration:none}#ghead a.gb2:hover{color:#fff !important}.sblc{padding-top:5px}.sblc a{display:block;margin:2px 0;margin-left:13px;font-size:11px}.lsbb{background:#eee;border:solid 1px;border-color:#ccc #999 #999 #ccc;height:30px}.lsbb{display:block}.ftl,#fll a{display:inline-block;margin:0 12px}.lsb{background:url(/images/srpr/nav_logo80.png) 0 -258px repeat-x;border:none;color:#000;cursor:pointer;height:30px;margin:0;outline:0;font:15px arial,sans-serif;vertical-align:top}.lsb:active{background:#ccc}.lst:focus{outline:none}</style><script></script></head><body bgcolor="#fff"><script>(function(){var src='/images/nav_logo176.png';var iesg=false;document.body.onload = function(){window.n && window.n();if (document.images){new Image().src=src;}
|
330
|
+
if (!iesg){document.f&&document.f.q.focus();document.gbqf&&document.gbqf.q.focus();}
|
331
|
+
}
|
332
|
+
})();</script><div id="mngb"> <div id=gbar><nobr><b class=gb1>Search</b> <a class=gb1 href="https://www.google.com/imghp?hl=en&tab=wi">Images</a> <a class=gb1 href="https://maps.google.com/maps?hl=en&tab=wl">Maps</a> <a class=gb1 href="https://play.google.com/?hl=en&tab=w8">Play</a> <a class=gb1 href="https://www.youtube.com/?tab=w1">YouTube</a> <a class=gb1 href="https://news.google.com/nwshp?hl=en&tab=wn">News</a> <a class=gb1 href="https://mail.google.com/mail/?tab=wm">Gmail</a> <a class=gb1 href="https://drive.google.com/?tab=wo">Drive</a> <a class=gb1 style="text-decoration:none" href="http://www.google.com/intl/en/options/"><u>More</u> »</a></nobr></div><div id=guser width=100%><nobr><span id=gbn class=gbi></span><span id=gbf class=gbf></span><span id=gbe></span><a href="http://www.google.com/history/optout?hl=en" class=gb4>Web History</a> | <a href="/preferences?hl=en" class=gb4>Settings</a> | <a target=_top id=gb_70 href="https://accounts.google.com/ServiceLogin?hl=en&continue=https://www.google.com/" class=gb4>Sign in</a></nobr></div><div class=gbh style=left:0></div><div class=gbh style=right:0></div> </div><center><span id="prt" style="display:block"> <div><style>.pmoabs{background-color:#fff;border:1px solid #E5E5E5;color:#666;font-size:13px;padding-bottom:20px;position:absolute;right:2px;top:3px;z-index:986}#pmolnk{border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px}.kd-button-submit{border:1px solid #3079ed;background-color:#4d90fe;background-image:-webkit-gradient(linear,left top,left bottom,from(#4d90fe),to(#4787ed));background-image:-webkit-linear-gradient(top,#4d90fe,#4787ed);background-image:-moz-linear-gradient(top,#4d90fe,#4787ed);background-image:-ms-linear-gradient(top,#4d90fe,#4787ed);background-image:-o-linear-gradient(top,#4d90fe,#4787ed);background-image:linear-gradient(top,#4d90fe,#4787ed);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#4d90fe',EndColorStr='#4787ed')}.kd-button-submit:hover{border:1px solid #2f5bb7;background-color:#357ae8;background-image:-webkit-gradient(linear,left top,left bottom,from(#4d90fe),to(#357ae8));background-image:-webkit-linear-gradient(top,#4d90fe,#357ae8);background-image:-moz-linear-gradient(top,#4d90fe,#357ae8);background-image:-ms-linear-gradient(top,#4d90fe,#357ae8);background-image:-o-linear-gradient(top,#4d90fe,#357ae8);background-image:linear-gradient(top,#4d90fe,#357ae8);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#4d90fe',EndColorStr='#357ae8')}.kd-button-submit:active{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.3);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.3);box-shadow:inset 0 1px 2px rgba(0,0,0,0.3)}#pmolnk a{color:#fff;display:inline-block;font-weight:bold;padding:5px 20px;text-decoration:none;white-space:nowrap}.xbtn{color:#999;cursor:pointer;font-size:23px;line-height:5px;padding-top:5px}.padi{padding:0 8px 0 10px}.padt{padding:5px 20px 0 0;color:#444}.pads{text-align:left;max-width:200px}</style> <div class="pmoabs" id="pmocntr2" style="behavior:url(#default#userdata);display:none"> <table border="0"> <tr> <td colspan="2"> <div class="xbtn" onclick="google.promos&&google.promos.toast&& google.promos.toast.cpc()" style="float:right">×</div> </td> </tr> <tr> <td class="padi" rowspan="2"> <img src="/images/icons/product/chrome-48.png"> </td> <td class="pads">A faster way to browse the web</td> </tr> <tr> <td class="padt"> <div class="kd-button-submit" id="pmolnk"> <a href="/chrome/index.html?hl=en&brand=CHNG&utm_source=en-hpp&utm_medium=hpp&utm_campaign=en" onclick="google.promos&&google.promos.toast&& google.promos.toast.cl()">Install Google Chrome</a> </div> </td> </tr> </table> </div> <script type="text/javascript">(function(){var a={o:{}};a.o.qa=50;a.o.oa=10;a.o.Y="body";a.o.Oa=!0;a.o.Ra=function(b,c){var d=a.o.Ea();a.o.Ga(d,b,c);a.o.Sa(d);a.o.Oa&&a.o.Pa(d)};a.o.Sa=function(b){(b=a.o.$(b))&&0<b.forms.length&&b.forms[0].submit()};a.o.Ea=function(){var b=document.createElement("iframe");b.height=0;b.width=0;b.style.overflow="hidden";b.style.top=b.style.left="-100px";b.style.position="absolute";document.body.appendChild(b);return b};a.o.$=function(b){return b.contentDocument||b.contentWindow.document};a.o.Ga=function(b,c,d){b=a.o.$(b);b.open();d=["<",a.o.Y,'><form method=POST action="',d,'">'];for(var e in c)c.hasOwnProperty(e)&&d.push('<textarea name="',e,'">',c[e],"</textarea>");d.push("</form></",a.o.Y,">");b.write(d.join(""));b.close()};a.o.ba=function(b,c){c>a.o.oa?google&&google.ml&&google.ml(Error("ogcdr"),!1,{cause:"timeout"}):b.contentWindow?a.o.Qa(b):window.setTimeout(function(){a.o.ba(b,c+1)},a.o.qa)};a.o.Qa=function(b){document.body.removeChild(b)};a.o.Pa=function(b){a.o.Ca(b,"load",function(){a.o.ba(b,0)})};a.o.Ca=function(b,c,d){b.addEventListener?b.addEventListener(c,d,!1):b.attachEvent&&b.attachEvent("on"+c,d)};var m={Va:0,D:1,F:2,K:5};a.k={};a.k.M={ka:"i",J:"d",ma:"l"};a.k.A={N:"0",G:"1"};a.k.O={L:1,J:2,I:3};a.k.v={ea:"a",ia:"g",C:"c",ya:"u",xa:"t",N:"p",pa:"pid",ga:"eid",za:"at"};a.k.la=window.location.protocol+"//www.google.com/_/og/promos/";a.k.ha="g";a.k.Aa="z";a.k.S=function(b,c,d,e){var f=null;switch(c){case m.D:f=window.gbar.up.gpd(b,d,!0);break;case m.K:f=window.gbar.up.gcc(e)}return null==f?0:parseInt(f,10)};a.k.Ka=function(b,c,d){return c==m.D?null!=window.gbar.up.gpd(b,d,!0):!1};a.k.P=function(b,c,d,e,f,h,k,l){var g={};g[a.k.v.N]=b;g[a.k.v.ia]=c;g[a.k.v.ea]=d;g[a.k.v.za]=e;g[a.k.v.ga]=f;g[a.k.v.pa]=1;k&&(g[a.k.v.C]=k);l&&(g[a.k.v.ya]=l);if(h)g[a.k.v.xa]=h;else return google.ml(Error("knu"),!1,{cause:"Token is not found"}),null;return g};a.k.V=function(b,c,d){if(b){var e=c?a.k.ha:a.k.Aa;c&&d&&(e+="?authuser="+d);a.o.Ra(b,a.k.la+e)}};a.k.Fa=function(b,c,d,e,f,h,k){b=a.k.P(c,b,a.k.M.J,a.k.O.J,d,f,null,e);a.k.V(b,h,k)};a.k.Ia=function(b,c,d,e,f,h,k){b=a.k.P(c,b,a.k.M.ka,a.k.O.L,d,f,e,null);a.k.V(b,h,k)};a.k.Na=function(b,c,d,e,f,h,k,l,g,n){switch(c){case m.K:window.gbar.up.dpc(e,f);break;case m.D:window.gbar.up.spd(b,d,1,!0);break;case m.F:g=g||!1,l=l||"",h=h||0,k=k||a.k.A.G,n=n||0,a.k.Fa(e,h,k,f,l,g,n)}};a.k.La=function(b,c,d,e,f){return c==m.D?0<d&&a.k.S(b,c,e,f)>=d:!1};a.k.Ha=function(b,c,d,e,f,h,k,l,g,n){switch(c){case m.K:window.gbar.up.iic(e,f);break;case m.D:c=a.k.S(b,c,d,e)+1;window.gbar.up.spd(b,d,c.toString(),!0);break;case m.F:g=g||!1,l=l||"",h=h||0,k=k||a.k.A.N,n=n||0,a.k.Ia(e,h,k,1,l,g,n)}};a.k.Ma=function(b,c,d,e,f,h){b=a.k.P(c,b,a.k.M.ma,a.k.O.I,d,e,null,null);a.k.V(b,f,h)};var p={Ta:"a",Wa:"l",Ua:"c",fa:"d",I:"h",L:"i",gb:"n",G:"x",cb:"ma",eb:"mc",fb:"mi",Xa:"pa",Ya:"pc",$a:"pi",bb:"pn",ab:"px",Za:"pd",hb:"gpa",jb:"gpi",kb:"gpn",lb:"gpx",ib:"gpd"};a.i={};a.i.s={na:"hplogo",wa:"pmocntr2"};a.i.A={va:"0",G:"1",da:"2"};a.i.p=document.getElementById(a.i.s.wa);a.i.ja=16;a.i.ra=2;a.i.ta=20;google.promos=google.promos||{};google.promos.toast=google.promos.toast||{};a.i.H=function(b){a.i.p&&(a.i.p.style.display=b?"":"none",a.i.p.parentNode&&(a.i.p.parentNode.style.position=b?"relative":""))};a.i.ca=function(b){try{if(a.i.p&&b&&b.es&&b.es.m){var c=window.gbar.rtl(document.body)?"left":"right";a.i.p.style[c]=b.es.m-a.i.ja+a.i.ra+"px";a.i.p.style.top=a.i.ta+"px"}}catch(d){google.ml(d,!1,{cause:a.i.w+"_PT"})}};google.promos.toast.cl=function(){try{a.i.Q==m.F&&a.k.Ma(a.i.T,a.i.B,a.i.A.da,a.i.X,a.i.U,a.i.W),window.gbar.up.sl(a.i.B,a.i.w,p.I,a.i.R(),1)}catch(b){google.ml(b,!1,{cause:a.i.w+"_CL"})}};google.promos.toast.cpc=function(){try{a.i.p&&(a.i.H(!1),a.k.Na(a.i.p,a.i.Q,a.i.s.Z,a.i.T,a.i.Da,a.i.B,a.i.A.G,a.i.X,a.i.U,a.i.W),window.gbar.up.sl(a.i.B,a.i.w,p.fa,a.i.R(),1))}catch(b){google.ml(b,!1,{cause:a.i.w+"_CPC"})}};a.i.aa=function(){try{if(a.i.p){var b=276,c=document.getElementById(a.i.s.na);c&&(b=Math.max(b,c.offsetWidth));var d=parseInt(a.i.p.style.right,10)||0;a.i.p.style.visibility=2*(a.i.p.offsetWidth+d)+b>document.body.clientWidth?"hidden":""}}catch(e){google.ml(e,!1,{cause:a.i.w+"_HOSW"})}};a.i.Ba=function(){var b=["gpd","spd","aeh","sl"];if(!window.gbar||!window.gbar.up)return!1;for(var c=0,d;d=b[c];c++)if(!(d in window.gbar.up))return!1;return!0};a.i.Ja=function(){return a.i.p.currentStyle&&"absolute"!=a.i.p.currentStyle.position};google.promos.toast.init=function(b,c,d,e,f,h,k,l,g,n,q,r){try{a.i.Ba()?a.i.p&&(e==m.F&&!l==!g?(google.ml(Error("tku"),!1,{cause:"zwieback: "+g+", gaia: "+l}),a.i.H(!1)):(a.i.s.C="toast_count_"+c+(q?"_"+q:""),a.i.s.Z="toast_dp_"+c+(r?"_"+r:""),a.i.w=d,a.i.B=b,a.i.Q=e,a.i.T=c,a.i.Da=f,a.i.X=l?l:g,a.i.U=!!l,a.i.W=k,a.k.Ka(a.i.p,e,a.i.s.Z,c)||a.k.La(a.i.p,e,h,a.i.s.C,c)||a.i.Ja()?a.i.H(!1):(a.k.Ha(a.i.p,e,a.i.s.C,c,f,a.i.B,a.i.A.va,a.i.X,a.i.U,a.i.W),n||(window.gbar.up.aeh(window,"resize",a.i.aa),window.lol=
|
333
|
+
a.i.aa,window.gbar.elr&&a.i.ca(window.gbar.elr()),window.gbar.elc&&window.gbar.elc(a.i.ca),a.i.H(!0)),window.gbar.up.sl(a.i.B,a.i.w,p.L,a.i.R())))):google.ml(Error("apa"),!1,{cause:a.i.w+"_INIT"})}catch(t){google.ml(t,!1,{cause:a.i.w+"_INIT"})}};a.i.R=function(){var b=a.k.S(a.i.p,a.i.Q,a.i.s.C,a.i.T);return"ic="+b};})();</script> <script type="text/javascript">(function(){var sourceWebappPromoID=144002;var sourceWebappGroupID=5;var payloadType=5;var cookieMaxAgeSec=2592000;var dismissalType=5;var impressionCap=25;var gaiaXsrfToken='';var zwbkXsrfToken='';var kansasDismissalEnabled=false;var sessionIndex=0;var invisible=false;window.gbar&&gbar.up&&gbar.up.r&&gbar.up.r(payloadType,function(show){if (show){google.promos.toast.init(sourceWebappPromoID,sourceWebappGroupID,payloadType,dismissalType,cookieMaxAgeSec,impressionCap,sessionIndex,gaiaXsrfToken,zwbkXsrfToken,invisible,'0612');}
|
334
|
+
});})();</script> </div> </span><br clear="all" id="lgpd"><div id="lga"><img alt="Google" height="95" src="/images/srpr/logo9w.png" style="padding:28px 0 14px" width="269" id="hplogo" onload="window.lol&&lol()"><br><br></div><form action="/search" name="f"><table cellpadding="0" cellspacing="0"><tr valign="top"><td width="25%"> </td><td align="center" nowrap=""><input name="ie" value="ISO-8859-1" type="hidden"><input value="en" name="hl" type="hidden"><input name="source" type="hidden" value="hp"><div class="ds" style="height:32px;margin:4px 0"><input style="color:#000;margin:0;padding:5px 8px 0 6px;vertical-align:top" autocomplete="off" class="lst" value="" title="Google Search" maxlength="2048" name="q" size="57"></div><br style="line-height:0"><span class="ds"><span class="lsbb"><input class="lsb" value="Google Search" name="btnG" type="submit"></span></span><span class="ds"><span class="lsbb"><input class="lsb" value="I'm Feeling Lucky" name="btnI" onclick="if(this.form.q.value)this.checked=1; else top.location='/doodles/'" type="submit"></span></span></td><td class="fl sblc" align="left" nowrap="" width="25%"><a href="/advanced_search?hl=en&authuser=0">Advanced search</a><a href="/language_tools?hl=en&authuser=0">Language tools</a></td></tr></table><input id="gbv" name="gbv" type="hidden" value="1"></form><div id="gac_scont"></div><div style="font-size:83%;min-height:3.5em"><br></div><span id="footer"><div style="font-size:10pt"><div style="margin:19px auto;text-align:center" id="fll"><a href="/intl/en/ads/">Advertising Programs</a><a href="/services/">Business Solutions</a><a href="https://plus.google.com/116899029375914044550" rel="publisher">+Google</a><a href="/intl/en/about.html">About Google</a></div></div><p style="color:#767676;font-size:8pt">© 2015 - <a href="/intl/en/policies/privacy/">Privacy</a> - <a href="/intl/en/policies/terms/">Terms</a></p></span></center><div id="xjsd"></div><div id="xjsi" data-jiis="bp"><script>(function(){function c(b){window.setTimeout(function(){var a=document.createElement("script");a.src=b;document.getElementById("xjsd").appendChild(a)},0)}google.dljp=function(b,a){google.xjsu=b;c(a)};google.dlj=c;})();(function(){window.google.xjsrm=[];})();if(google.y)google.y.first=[];if(!google.xjs){window._=window._||{};window._._DumpException=function(e){throw e};if(google.timers&&google.timers.load.t){google.timers.load.t.xjsls=new Date().getTime();}google.dljp('/xjs/_/js/k\x3dxjs.hp.en_US.RCXzEoiQJnk.O/m\x3dsb_he,d/rt\x3dj/d\x3d1/t\x3dzcms/rs\x3dACT90oFuEFm04ilHecN4gQdXoQjjn2nayA','/xjs/_/js/k\x3dxjs.hp.en_US.RCXzEoiQJnk.O/m\x3dsb_he,d/rt\x3dj/d\x3d1/t\x3dzcms/rs\x3dACT90oFuEFm04ilHecN4gQdXoQjjn2nayA');google.xjs=1;}google.pmc={"sb_he":{"agen":true,"cgen":true,"client":"heirloom-hp","dh":true,"ds":"","exp":"msedr","fl":true,"host":"google.com","jam":0,"jsonp":true,"msgs":{"cibl":"Clear Search","dym":"Did you mean:","lcky":"I\u0026#39;m Feeling Lucky","lml":"Learn more","oskt":"Input tools","psrc":"This search was removed from your \u003Ca href=\"/history\"\u003EWeb History\u003C/a\u003E","psrl":"Remove","sbit":"Search by image","srch":"Google Search"},"ovr":{},"pq":"","refoq":true,"refpd":true,"rfs":[],"scd":10,"sce":5,"stok":"4qawO1cBsMT0G51o9ffViqA4llo"},"d":{}};google.y.first.push(function(){if(google.med){google.med('init');google.initHistory();google.med('history');}});if(google.j&&google.j.en&&google.j.xi){window.setTimeout(google.j.xi,0);}
|
335
|
+
</script></div></body></html>
|
336
|
+
http_version:
|
337
|
+
recorded_at: Tue, 07 Apr 2015 12:36:08 GMT
|
338
|
+
recorded_with: VCR 2.9.3
|
data/spec/muxer/request_spec.rb
CHANGED
@@ -26,13 +26,13 @@ RSpec.describe Muxer::Request do
|
|
26
26
|
it 'has a valid method' do
|
27
27
|
request.method = 'POST'
|
28
28
|
|
29
|
-
expect(request.method).to eq(:
|
29
|
+
expect(request.method).to eq(:post)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'does not have an invalid method' do
|
33
33
|
request.method = "WRONG"
|
34
34
|
|
35
|
-
expect(request.method).to eq(:
|
35
|
+
expect(request.method).to eq(:get)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
data/spec/muxer_spec.rb
CHANGED
@@ -3,11 +3,43 @@ require 'spec_helper'
|
|
3
3
|
RSpec.describe Muxer, "execute" do
|
4
4
|
|
5
5
|
it 'can make a web request' do
|
6
|
-
|
7
|
-
|
6
|
+
VCR.use_cassette('muxer/makes_a_web_request') do
|
7
|
+
response = Muxer.execute do |muxer|
|
8
|
+
muxer.add_url "http://www.rubydoc.info"
|
9
|
+
end
|
10
|
+
|
11
|
+
expect(response).to be_kind_of(Hash)
|
12
|
+
expect(response[:succeeded]).to be_kind_of(Array)
|
8
13
|
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'can make multiple web requests' do
|
17
|
+
VCR.use_cassette('muxer/makes_multiple_web_requests') do
|
18
|
+
response = Muxer.execute do |muxer|
|
19
|
+
muxer.add_url "http://www.rubydoc.info"
|
20
|
+
muxer.add_url "https://www.google.com"
|
21
|
+
end
|
9
22
|
|
10
|
-
|
23
|
+
expect(response).to be_kind_of(Hash)
|
24
|
+
expect(response[:succeeded]).to be_kind_of(Array)
|
25
|
+
expect(response[:succeeded].count).to eq(2)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'can have a request fail' do
|
30
|
+
VCR.use_cassette('muxer/can_have_a_request_fail', :record => :new_episodes) do
|
31
|
+
response = Muxer.execute do |muxer|
|
32
|
+
muxer.add_url "http://www.rubydoc.info"
|
33
|
+
muxer.add_url "https://www.thisisabadexampledomain.com"
|
34
|
+
end
|
35
|
+
|
36
|
+
expect(response).to be_kind_of(Hash)
|
37
|
+
expect(response[:succeeded]).to be_kind_of(Array)
|
38
|
+
expect(response[:succeeded].count).to eq(1)
|
39
|
+
|
40
|
+
expect(response[:failed]).to be_kind_of(Array)
|
41
|
+
expect(response[:failed].count).to eq(1)
|
42
|
+
end
|
11
43
|
end
|
12
44
|
|
13
45
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
require 'vcr'
|
2
|
+
require 'pry'
|
2
3
|
require File.join(__FILE__, "..","..","lib","muxer")
|
4
|
+
|
5
|
+
require "codeclimate-test-reporter"
|
6
|
+
CodeClimate::TestReporter.start
|
7
|
+
|
3
8
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
4
9
|
RSpec.configure do |config|
|
5
10
|
# rspec-expectations config goes here. You can use an alternate
|
@@ -28,7 +33,7 @@ RSpec.configure do |config|
|
|
28
33
|
|
29
34
|
VCR.configure do |c|
|
30
35
|
c.cassette_library_dir = 'spec/cassettes'
|
31
|
-
|
36
|
+
c.hook_into :webmock
|
32
37
|
end
|
33
38
|
# The settings below are suggested to provide a good initial experience
|
34
39
|
# with RSpec, but feel free to customize to your heart's content.
|
@@ -49,7 +54,7 @@ RSpec.configure do |config|
|
|
49
54
|
|
50
55
|
# This setting enables warnings. It's recommended, but in some cases may
|
51
56
|
# be too noisy due to issues in dependencies.
|
52
|
-
config.warnings = true
|
57
|
+
# config.warnings = true
|
53
58
|
|
54
59
|
# Many RSpec users commonly either run the entire suite or an individual
|
55
60
|
# file, and it's useful to allow more verbose output when running an
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muxer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris MacNaughton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
@@ -108,6 +108,34 @@ dependencies:
|
|
108
108
|
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0.10'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: webmock
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.20'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.20'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: codeclimate-test-reporter
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
111
139
|
description: Muxer allows timeouts to be set for each request made in addition to
|
112
140
|
a global timeout for a set of requests.
|
113
141
|
email:
|
@@ -127,6 +155,9 @@ files:
|
|
127
155
|
- lib/muxer/request.rb
|
128
156
|
- lib/muxer/version.rb
|
129
157
|
- muxer.gemspec
|
158
|
+
- spec/cassettes/muxer/can_have_a_request_fail.yml
|
159
|
+
- spec/cassettes/muxer/makes_a_web_request.yml
|
160
|
+
- spec/cassettes/muxer/makes_multiple_web_requests.yml
|
130
161
|
- spec/muxer/multiplexer_spec.rb
|
131
162
|
- spec/muxer/request_spec.rb
|
132
163
|
- spec/muxer_spec.rb
|
@@ -156,6 +187,9 @@ signing_key:
|
|
156
187
|
specification_version: 4
|
157
188
|
summary: Muxer is a web request multiplexer
|
158
189
|
test_files:
|
190
|
+
- spec/cassettes/muxer/can_have_a_request_fail.yml
|
191
|
+
- spec/cassettes/muxer/makes_a_web_request.yml
|
192
|
+
- spec/cassettes/muxer/makes_multiple_web_requests.yml
|
159
193
|
- spec/muxer/multiplexer_spec.rb
|
160
194
|
- spec/muxer/request_spec.rb
|
161
195
|
- spec/muxer_spec.rb
|