muxer 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a316a714df40c8c84c63aebee40bb00ca0e80271
|
4
|
+
data.tar.gz: e0153cbbddd286cdb45755e8e77708a91b808123
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f9934011fc0dd35002f7d5d8445c1ee631c52581e23009ab9909ec8528648e0058a91b7b7e5e66004de2ed377a8f91080f1fa51cea8fd70084246c270664822
|
7
|
+
data.tar.gz: 1bcf43298545f85324a0a704158575a6affc283808fa19b504db9724bee72b69fae1d7528d9247fc7f273735badc96eae34a475d04ff7c8b1e512dfb61311aa8
|
data/lib/muxer/multiplexer.rb
CHANGED
@@ -1,23 +1,52 @@
|
|
1
1
|
module Muxer
|
2
2
|
class Multiplexer
|
3
|
-
|
3
|
+
attr_reader :requests
|
4
4
|
def initialize
|
5
5
|
@requests = []
|
6
|
+
@timeout = nil
|
6
7
|
end
|
7
8
|
|
8
|
-
def add_url(url)
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
def add_url(url, timeout = nil)
|
10
|
+
request = Request.new
|
11
|
+
request.url = url
|
12
|
+
request.timeout = timeout if timeout
|
13
|
+
requests << request
|
12
14
|
end
|
13
15
|
|
14
16
|
def execute
|
15
|
-
responses = []
|
17
|
+
responses = {succeeded: [], failed: [], pending: []}
|
16
18
|
looping = true
|
19
|
+
finish = Time.now + @timeout if @timeout
|
17
20
|
EventMachine.run do
|
18
|
-
|
19
|
-
|
21
|
+
requests.each do |request|
|
22
|
+
responses[:pending] << request.process!
|
23
|
+
end
|
20
24
|
|
25
|
+
EM::PeriodicTimer.new(0.01) do
|
26
|
+
responses[:pending].each do |pending|
|
27
|
+
# binding.pry
|
28
|
+
if pending.completed?
|
29
|
+
responses[:pending].delete(pending)
|
30
|
+
if pending.error.nil?
|
31
|
+
responses[:succeeded] << pending
|
32
|
+
else
|
33
|
+
responses[:failed] << pending
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
if @timeout && Time.now >= finish
|
38
|
+
responses[:pending].each do |pending|
|
39
|
+
responses[:failed] << pending
|
40
|
+
end
|
41
|
+
responses[:pending] = []
|
42
|
+
EM.stop
|
43
|
+
end
|
44
|
+
|
45
|
+
if responses[:pending].empty?
|
46
|
+
EM.stop
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
21
50
|
responses
|
22
51
|
end
|
23
52
|
end
|
data/lib/muxer/request.rb
CHANGED
@@ -1,29 +1,40 @@
|
|
1
1
|
module Muxer
|
2
2
|
class Request
|
3
3
|
attr_accessor :url, :timeout, :headers
|
4
|
-
attr_reader :method
|
4
|
+
attr_reader :method, :completed, :error
|
5
5
|
|
6
|
+
alias_method :completed?, :completed
|
6
7
|
def initialize
|
7
|
-
@method = :
|
8
|
-
@
|
8
|
+
@method = :get
|
9
|
+
@completed = false
|
10
|
+
@timeout = 10
|
9
11
|
@headers = {}
|
12
|
+
@request = nil
|
13
|
+
@error = nil
|
10
14
|
end
|
11
15
|
|
12
16
|
def method=(method)
|
13
17
|
method = method.downcase.to_sym
|
14
18
|
|
15
|
-
@method = method
|
19
|
+
@method = method if [:get, :post, :head, :options, :put, :delete].include? method
|
16
20
|
end
|
17
21
|
|
18
22
|
def process!
|
19
|
-
http = EventMachine::HttpRequest.new(url
|
20
|
-
http.public_send(method,
|
21
|
-
head: headers,
|
23
|
+
http = EventMachine::HttpRequest.new(url,
|
22
24
|
connect_timeout: timeout,
|
23
|
-
inactivity_timeout: timeout
|
25
|
+
inactivity_timeout: timeout,
|
26
|
+
)
|
27
|
+
@request = http.public_send(method,
|
28
|
+
head: headers,
|
24
29
|
)
|
25
30
|
|
26
|
-
|
31
|
+
@request.callback { @completed = true }
|
32
|
+
@request.errback { @completed = @error = true}
|
33
|
+
self
|
34
|
+
end
|
35
|
+
|
36
|
+
def response
|
37
|
+
@request.response
|
27
38
|
end
|
28
39
|
end
|
29
40
|
end
|
data/lib/muxer/version.rb
CHANGED
data/muxer.gemspec
CHANGED
@@ -26,4 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency "rspec", "~>3.2"
|
27
27
|
spec.add_development_dependency "vcr", "~>2.9"
|
28
28
|
spec.add_development_dependency "pry", "~>0.10"
|
29
|
+
spec.add_development_dependency "webmock", "~>1.20"
|
30
|
+
spec.add_development_dependency "codeclimate-test-reporter"
|
29
31
|
end
|
@@ -0,0 +1,282 @@
|
|
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:40:04 GMT
|
31
|
+
X-Varnish:
|
32
|
+
- 773431391 773417265
|
33
|
+
Age:
|
34
|
+
- '1297'
|
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:40:05 GMT
|
282
|
+
recorded_with: VCR 2.9.3
|