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
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
|