unwind 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/unwind/version.rb +1 -1
- data/lib/unwind.rb +4 -0
- data/test/redirect_follower_test.rb +9 -2
- data/vcr_cassettes/no_redirect.yml +230 -0
- metadata +9 -8
data/lib/unwind/version.rb
CHANGED
data/lib/unwind.rb
CHANGED
@@ -11,14 +11,21 @@ describe 'Tests :)' do
|
|
11
11
|
|
12
12
|
it 'should resolve the url' do
|
13
13
|
VCR.use_cassette('xZVND1') do
|
14
|
-
follower = Unwind::RedirectFollower.new('http://j.mp/xZVND1')
|
15
|
-
follower.resolve
|
14
|
+
follower = Unwind::RedirectFollower.new('http://j.mp/xZVND1').resolve
|
16
15
|
assert_equal 'http://ow.ly/i/s1O0', follower.final_url
|
17
16
|
assert_equal 'http://j.mp/xZVND1', follower.original_url
|
18
17
|
assert_equal 2, follower.redirects.count
|
18
|
+
assert follower.redirected?
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
it 'should not be redirected' do
|
23
|
+
VCR.use_cassette('no redirect') do
|
24
|
+
follower = Unwind::RedirectFollower.new('http://www.scottw.com').resolve
|
25
|
+
assert !follower.redirected?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
22
29
|
it 'should raise TooManyRedirects' do
|
23
30
|
VCR.use_cassette('xZVND1') do
|
24
31
|
follower = Unwind::RedirectFollower.new('http://j.mp/xZVND1', 1)
|
@@ -0,0 +1,230 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://www.scottw.com:80/
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
response: !ruby/struct:VCR::Response
|
9
|
+
status: !ruby/struct:VCR::ResponseStatus
|
10
|
+
code: 200
|
11
|
+
message: OK
|
12
|
+
headers:
|
13
|
+
server:
|
14
|
+
- nginx
|
15
|
+
date:
|
16
|
+
- Tue, 14 Feb 2012 16:55:15 GMT
|
17
|
+
content-type:
|
18
|
+
- text/html;charset=utf-8
|
19
|
+
connection:
|
20
|
+
- keep-alive
|
21
|
+
x-frame-options:
|
22
|
+
- sameorigin
|
23
|
+
x-xss-protection:
|
24
|
+
- 1; mode=block
|
25
|
+
last-modified:
|
26
|
+
- Wed, 01 Feb 2012 16:03:28 GMT
|
27
|
+
content-length:
|
28
|
+
- '15677'
|
29
|
+
x-varnish:
|
30
|
+
- '1407065053'
|
31
|
+
age:
|
32
|
+
- '0'
|
33
|
+
via:
|
34
|
+
- 1.1 varnish
|
35
|
+
body: ! "\n<!DOCTYPE html>\n<!--[if IEMobile 7 ]><html class=\"no-js iem7\"><![endif]-->\n<!--[if
|
36
|
+
lt IE 9]><html class=\"no-js lte-ie8\"><![endif]-->\n<!--[if (gt IE 8)|(gt IEMobile
|
37
|
+
7)|!(IEMobile)|!(IE)]><!--><html class=\"no-js\" lang=\"en\"><!--<![endif]-->\n<head>\n
|
38
|
+
\ <meta charset=\"utf-8\">\n <title>Scott Watermasysk</title>\n <meta name=\"author\"
|
39
|
+
content=\"Scott Watermasysk\">\n\n \n <meta name=\"description\" content=\"Why
|
40
|
+
is this important? It means no more committing the public directory into git.
|
41
|
+
Even with just 200 or so posts, my git history felt like it was …\">\n
|
42
|
+
\ \n\n <!-- http://t.co/dKP3o1e -->\n <meta name=\"HandheldFriendly\" content=\"True\">\n
|
43
|
+
\ <meta name=\"MobileOptimized\" content=\"320\">\n <meta name=\"viewport\"
|
44
|
+
content=\"width=device-width, initial-scale=1\">\n\n \n <link rel=\"canonical\"
|
45
|
+
href=\"http://www.scottw.com\">\n <link href=\"/favicon.png\" rel=\"icon\">\n
|
46
|
+
\ <link href=\"/stylesheets/screen.css\" media=\"screen, projection\" rel=\"stylesheet\"
|
47
|
+
type=\"text/css\">\n <script src=\"/javascripts/modernizr-2.0.js\"></script>\n
|
48
|
+
\ <script src=\"/javascripts/ender.js\"></script>\n <script src=\"/javascripts/octopress.js\"
|
49
|
+
type=\"text/javascript\"></script>\n <link href=\"http://feeds.simpable.com/simpable\"
|
50
|
+
rel=\"alternate\" title=\"Scott Watermasysk\" type=\"application/atom+xml\">\n
|
51
|
+
\ <!--Fonts from Google's Web font directory at http://google.com/webfonts -->\n<link
|
52
|
+
href='http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic'
|
53
|
+
rel='stylesheet' type='text/css'>\n<link href='http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic'
|
54
|
+
rel='stylesheet' type='text/css'>\n\n \n <script type=\"text/javascript\">\n
|
55
|
+
\ var _gaq = _gaq || [];\n _gaq.push(['_setAccount', 'UA-65729-10']);\n
|
56
|
+
\ _gaq.push(['_trackPageview']);\n\n (function() {\n var ga = document.createElement('script');
|
57
|
+
ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol
|
58
|
+
? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n var
|
59
|
+
s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga,
|
60
|
+
s);\n })();\n </script>\n\n\n</head>\n\n<body >\n <header role=\"banner\"><hgroup>\n
|
61
|
+
\ <h1><a href=\"/\">Scott Watermasysk</a></h1>\n \n <h2>Still Learning</h2>\n
|
62
|
+
\ \n</hgroup>\n\n</header>\n <nav role=\"navigation\"><ul class=\"subscription\"
|
63
|
+
data-subscription=\"rss\">\n <li><a href=\"http://feeds.simpable.com/simpable\"
|
64
|
+
rel=\"subscribe-rss\" title=\"subscribe via RSS\">RSS</a></li>\n \n</ul>\n
|
65
|
+
\ \n<form action=\"http://google.com/search\" method=\"get\">\n <fieldset role=\"search\">\n
|
66
|
+
\ <input type=\"hidden\" name=\"q\" value=\"site:www.scottw.com\" />\n <input
|
67
|
+
class=\"search\" type=\"text\" name=\"q\" results=\"0\" placeholder=\"Search\"/>\n
|
68
|
+
\ </fieldset>\n</form>\n \n<ul role=main-navigation>\n <li><a href=\"/\">Home</a></li>\n
|
69
|
+
\ <li><a href=\"/about\">About</a></li>\n <li><a href=\"/archives\">Archives</a></li>\n
|
70
|
+
\ <li><a href=\"/links\">Links</a></li>\n <li><a href=\"http://twitter.com/scottw\">@ScottW</a></li>\n</ul>\n\n</nav>\n
|
71
|
+
\ <div id=\"main\">\n <div id=\"content\">\n <div class=\"blog-index\">\n
|
72
|
+
\ \n \n \n <article>\n \n <header>\n\t\t\n\t\t\t<!-- This defines
|
73
|
+
how Octopress will use posts with external-url. -->\n\t\t\t\t<h1 class=\"entry-title\"><a
|
74
|
+
class=\"external-link\" href=\"http://jasongarber.com/blog/2012/01/10/deploying-octopress-to-heroku-with-a-custom-buildpack/\">Deploying
|
75
|
+
Octopress to Heroku With a Custom Buildpack</a></h1>\n\t\t\t \t\n\t\t \t\n
|
76
|
+
\ \n <p class=\"meta\">\n \n\n\n\n\n\n\n\n\n \n\n\n<time datetime=\"2012-02-01T10:09:00+00:00\"
|
77
|
+
pubdate data-updated=\"true\">Feb 1<span>st</span>, 2012</time>\n \n
|
78
|
+
\ </p>\n \n </header>\n\n\n <div class=\"entry-content\"><p>Why is
|
79
|
+
this important? It means no more committing the public directory into git.</p>\n\n<p>Even
|
80
|
+
with just 200 or so posts, my git history felt like it was exploding every time
|
81
|
+
I wrote a new post.</p>\n\n<p>I went ahead and nuked my old blog repo and <a
|
82
|
+
href=\"http://github.com/scottwater/scottw.com\">recommitted this cleaner</a>
|
83
|
+
(and leaner) version if you need a starting place.</p>\n\n<p>Jason’s steps
|
84
|
+
were great, but I did run into two snags:</p>\n\n<ol>\n<li>I could not set the
|
85
|
+
buildpack directly when creating the app. I had to add the heroku config var
|
86
|
+
for it instead.</li>\n<li>I got an error about a missing daemon gem. Heroku’s
|
87
|
+
cedar stack is still in beta and running a RC version of bundler (as of today).
|
88
|
+
I haven’t dug any further, but nuking my gem vendor folder and starting
|
89
|
+
over seemed to do the trick.</li>\n</ol>\n\n</div>\n \n \n\n\n\n\t<div class=\"entry-content\"></div>\n\t<footer><a
|
90
|
+
rel=\"full-article\" href=\"/deploying-octopress-to-heroku\">Permalink</a></footer>\n\n\n
|
91
|
+
\ </article>\n \n \n <article>\n \n <header>\n\t\t\n\t\t\t<!--
|
92
|
+
This defines how Octopress will use posts with external-url. -->\n\t\t\t\t<h1
|
93
|
+
class=\"entry-title\"><a class=\"external-link\" href=\"http://www.candlerblog.com/2012/01/30/octopress-linked-list/\">Octopress
|
94
|
+
Linked List</a></h1>\n\t\t\t \t\n\t\t \t\n \n <p class=\"meta\">\n
|
95
|
+
\ \n\n\n\n\n\n\n\n\n \n\n\n<time datetime=\"2012-02-01T06:39:00+00:00\"
|
96
|
+
pubdate data-updated=\"true\">Feb 1<span>st</span>, 2012</time>\n \n
|
97
|
+
\ </p>\n \n </header>\n\n\n <div class=\"entry-content\"><p>I have
|
98
|
+
been meaning to implement this on my own for a while.</p>\n\n<p>I did make one
|
99
|
+
minor adjustment David’s example. Instead of inlining the glyph, I am
|
100
|
+
adding it via CSS:</p>\n\n<figure class='code'><figcaption><span></span></figcaption><div
|
101
|
+
class=\"highlight\"><table><tr><td class=\"gutter\"><pre class=\"line-numbers\"><span
|
102
|
+
class='line-number'>1</span>\n<span class='line-number'>2</span>\n<span class='line-number'>3</span>\n</pre></td><td
|
103
|
+
class='code'><pre><code class='css'><span class='line'><span class=\"nt\">a</span><span
|
104
|
+
class=\"nc\">.external-link</span><span class=\"nd\">:after</span> <span class=\"p\">{</span>\n</span><span
|
105
|
+
class='line'> <span class=\"k\">content</span><span class=\"o\">:</span> <span
|
106
|
+
class=\"s2\">" \\27A6"</span><span class=\"p\">;</span>\n</span><span
|
107
|
+
class='line'><span class=\"p\">}</span>\n</span></code></pre></td></tr></table></div></figure>\n\n</div>\n
|
108
|
+
\ \n \n\n\n\n\t<div class=\"entry-content\"></div>\n\t<footer><a rel=\"full-article\"
|
109
|
+
href=\"/octopress-linked-list\">Permalink</a></footer>\n\n\n </article>\n
|
110
|
+
\ \n \n <article>\n \n <header>\n\t\t\n\t\t\t<!-- Now we're back to
|
111
|
+
normal posts. Note the links used under href in both headers.-->\n\t\t\t \t<h1
|
112
|
+
class=\"entry-title\"><a href=\"/async-emails-with-sorcery\">Async Emails With
|
113
|
+
Sorcery</a></h1>\n\t\t\t\t\n\t\t \t\n \n <p class=\"meta\">\n \n\n\n\n\n\n\n\n\n
|
114
|
+
\ \n\n\n<time datetime=\"2011-11-28T12:27:00+00:00\" pubdate data-updated=\"true\">Nov
|
115
|
+
28<span>th</span>, 2011</time>\n \n </p>\n \n </header>\n\n\n
|
116
|
+
\ <div class=\"entry-content\"><p>For <a href=\"http://www.kickofflabs.com\">KickoffLabs</a>,
|
117
|
+
we rolled our own authentication. This worked really well, but doing it (even
|
118
|
+
if we packaged it up) for future projects is less than appealing.</p>\n\n<p>I
|
119
|
+
have used/tried Devise, Clearance, and AuthLogic but none of them seemed to
|
120
|
+
fit.</p>\n\n<p>Enter <a href=\"https://github.com/NoamB/sorcery\">Sorcery</a>.
|
121
|
+
Sorcery is a relatively new player in the rails authentication arms race.</p>\n\n</div>\n
|
122
|
+
\ \n \n <footer>\n <a rel=\"full-article\" href=\"/async-emails-with-sorcery\">Read
|
123
|
+
on →</a>\n </footer>\n \n\n\n\n\n </article>\n \n \n <article>\n
|
124
|
+
\ \n <header>\n\t\t\n\t\t\t<!-- Now we're back to normal posts. Note the
|
125
|
+
links used under href in both headers.-->\n\t\t\t \t<h1 class=\"entry-title\"><a
|
126
|
+
href=\"/heroku-ssl-and-dnsimple\">Heroku SSL via DNSimple</a></h1>\n\t\t\t\t\n\t\t
|
127
|
+
\ \t\n \n <p class=\"meta\">\n \n\n\n\n\n\n\n\n\n \n\n\n<time
|
128
|
+
datetime=\"2011-11-22T09:56:00+00:00\" pubdate data-updated=\"true\">Nov 22<span>nd</span>,
|
129
|
+
2011</time>\n \n </p>\n \n </header>\n\n\n <div class=\"entry-content\"><p>If
|
130
|
+
you google for Heroku SSL you will find a surprisingly long list of blog posts
|
131
|
+
usually with many steps.</p>\n\n<p>However, it is actually much easier than
|
132
|
+
what most of them list, especially if you are using <a href=\"https://dnsimple.com/r/a2fb5da9458e27\">DNSimple</a>
|
133
|
+
(note: affiliate link).</p>\n\n<p>Here is how to setup a <strong>Hostname Based</strong>
|
134
|
+
certificate on Heroku:</p>\n\n</div>\n \n \n <footer>\n <a rel=\"full-article\"
|
135
|
+
href=\"/heroku-ssl-and-dnsimple\">Read on →</a>\n </footer>\n \n\n\n\n\n
|
136
|
+
\ </article>\n \n \n <article>\n \n <header>\n\t\t\n\t\t\t<!--
|
137
|
+
Now we're back to normal posts. Note the links used under href in both headers.-->\n\t\t\t
|
138
|
+
\t<h1 class=\"entry-title\"><a href=\"/sinatra-public-heroku\">Static Files
|
139
|
+
Using Sinatra::Base on Heroku</a></h1>\n\t\t\t\t\n\t\t \t\n \n <p class=\"meta\">\n
|
140
|
+
\ \n\n\n\n\n\n\n\n\n \n\n\n<time datetime=\"2011-11-01T10:11:00+00:00\"
|
141
|
+
pubdate data-updated=\"true\">Nov 1<span>st</span>, 2011</time>\n \n
|
142
|
+
\ </p>\n \n </header>\n\n\n <div class=\"entry-content\"><p>I deployed
|
143
|
+
a small <a href=\"http://www.sinatrarb.com/\">Sinatra</a> app last night to
|
144
|
+
<a href=\"http://www.heroku.com\">Heroku</a> for the new <a href=\"http://api.kickofflabs.com\">KickoffLabs
|
145
|
+
API</a>.</p>\n\n<p>Most of the Sinatra apps I have deployed in the past have
|
146
|
+
been small prototypes and used the inline Sinatra app style.</p>\n\n<p>However,
|
147
|
+
in this case, I made the decision early on to use the Sinatra::Base class style
|
148
|
+
since we plan on growing the API codebase (ie, we are going to keep it around
|
149
|
+
for a long time).</p>\n\n</div>\n \n \n <footer>\n <a rel=\"full-article\"
|
150
|
+
href=\"/sinatra-public-heroku\">Read on →</a>\n </footer>\n \n\n\n\n\n
|
151
|
+
\ </article>\n \n \n <article>\n \n <header>\n\t\t\n\t\t\t<!--
|
152
|
+
Now we're back to normal posts. Note the links used under href in both headers.-->\n\t\t\t
|
153
|
+
\t<h1 class=\"entry-title\"><a href=\"/simple-dev-tools\">My Favorite Tools
|
154
|
+
for a Simple Development Environment</a></h1>\n\t\t\t\t\n\t\t \t\n \n <p
|
155
|
+
class=\"meta\">\n \n\n\n\n\n\n\n\n\n \n\n\n<time datetime=\"2011-09-13T10:41:00+00:00\"
|
156
|
+
pubdate data-updated=\"true\">Sep 13<span>th</span>, 2011</time>\n \n
|
157
|
+
\ </p>\n \n </header>\n\n\n <div class=\"entry-content\"><p>Here is
|
158
|
+
an updated list of the tools I use daily to try and make development both simple
|
159
|
+
and enjoyable.</p>\n\n</div>\n \n \n <footer>\n <a rel=\"full-article\"
|
160
|
+
href=\"/simple-dev-tools\">Read on →</a>\n </footer>\n \n\n\n\n\n </article>\n
|
161
|
+
\ \n \n <article>\n \n <header>\n\t\t\n\t\t\t<!-- Now we're back to
|
162
|
+
normal posts. Note the links used under href in both headers.-->\n\t\t\t \t<h1
|
163
|
+
class=\"entry-title\"><a href=\"/my-favorite-podcasts\">My Favorite Startup
|
164
|
+
and Ruby Podcasts</a></h1>\n\t\t\t\t\n\t\t \t\n \n <p class=\"meta\">\n
|
165
|
+
\ \n\n\n\n\n\n\n\n\n \n\n\n<time datetime=\"2011-09-08T19:18:00+00:00\"
|
166
|
+
pubdate data-updated=\"true\">Sep 8<span>th</span>, 2011</time>\n \n
|
167
|
+
\ </p>\n \n </header>\n\n\n <div class=\"entry-content\"><p>My taste
|
168
|
+
in podcasts varies by what is actually going on in my life. Right now it is
|
169
|
+
mostly startups (<a href=\"http://www.kickofflabs.com\">KickoffLabs</a>) and
|
170
|
+
Ruby.</p>\n\n<p>Here are my current favorites:</p>\n\n</div>\n \n \n <footer>\n
|
171
|
+
\ <a rel=\"full-article\" href=\"/my-favorite-podcasts\">Read on →</a>\n
|
172
|
+
\ </footer>\n \n\n\n\n\n </article>\n \n \n <article>\n \n <header>\n\t\t\n\t\t\t<!--
|
173
|
+
Now we're back to normal posts. Note the links used under href in both headers.-->\n\t\t\t
|
174
|
+
\t<h1 class=\"entry-title\"><a href=\"/resque-mail-queue-gem\">Resque Mail Queue
|
175
|
+
Gem</a></h1>\n\t\t\t\t\n\t\t \t\n \n <p class=\"meta\">\n \n\n\n\n\n\n\n\n\n
|
176
|
+
\ \n\n\n<time datetime=\"2011-09-07T07:29:00+00:00\" pubdate data-updated=\"true\">Sep
|
177
|
+
7<span>th</span>, 2011</time>\n \n </p>\n \n </header>\n\n\n
|
178
|
+
\ <div class=\"entry-content\"><p>I have written two times (<a href=\"http://www.scottw.com/simple-resque-mail-queue\">Simple
|
179
|
+
Resque Mail Queue</a> and <a href=\"http://www.scottw.com/simple-resque-mail-queue-ii\">Simple
|
180
|
+
Resque Mail Queue II</a>) before about a simple module <em>MailQueue</em> which
|
181
|
+
can be used to easily send email asynchronously with <a href=\"http://github.com/defunkt/resque\">Resque</a>.</p>\n\n</div>\n
|
182
|
+
\ \n \n <footer>\n <a rel=\"full-article\" href=\"/resque-mail-queue-gem\">Read
|
183
|
+
on →</a>\n </footer>\n \n\n\n\n\n </article>\n \n \n <article>\n
|
184
|
+
\ \n <header>\n\t\t\n\t\t\t<!-- Now we're back to normal posts. Note the
|
185
|
+
links used under href in both headers.-->\n\t\t\t \t<h1 class=\"entry-title\"><a
|
186
|
+
href=\"/automated-timezone-detection\">Improving Automated Timezone Detection</a></h1>\n\t\t\t\t\n\t\t
|
187
|
+
\ \t\n \n <p class=\"meta\">\n \n\n\n\n\n\n\n\n\n \n\n\n<time
|
188
|
+
datetime=\"2011-09-06T08:30:00+00:00\" pubdate data-updated=\"true\">Sep 6<span>th</span>,
|
189
|
+
2011</time>\n \n </p>\n \n </header>\n\n\n <div class=\"entry-content\"><p>tl;dr
|
190
|
+
- Just using the Javascript getTimezoneOffset to auto-detect timezone information
|
191
|
+
will not work properly during daylight savings and has a couple of other minor
|
192
|
+
gotchas. Check out the <a href=\"https://bitbucket.org/pellepim/jstimezonedetect/wiki/Home\">jsTimezoneDetect</a>
|
193
|
+
and my simple <a href=\"https://github.com/scottwater/jquery.detect_timezone\">jQuery
|
194
|
+
detect_timezone plugin</a> for more accurate timezone information. I also put
|
195
|
+
together a gem, <a href=\"https://github.com/scottwater/detect_timezone_rails\">detect_timezone_rails</a>,
|
196
|
+
to automate the process in Rails.</p>\n\n</div>\n \n \n <footer>\n <a
|
197
|
+
rel=\"full-article\" href=\"/automated-timezone-detection\">Read on →</a>\n
|
198
|
+
\ </footer>\n \n\n\n\n\n </article>\n \n \n <article>\n \n <header>\n\t\t\n\t\t\t<!--
|
199
|
+
Now we're back to normal posts. Note the links used under href in both headers.-->\n\t\t\t
|
200
|
+
\t<h1 class=\"entry-title\"><a href=\"/multiple-smtp-servers-with-action-mailer\">Multiple
|
201
|
+
Smtp Servers With Action Mailer</a></h1>\n\t\t\t\t\n\t\t \t\n \n <p
|
202
|
+
class=\"meta\">\n \n\n\n\n\n\n\n\n\n \n\n\n<time datetime=\"2011-09-04T09:25:00+00:00\"
|
203
|
+
pubdate data-updated=\"true\">Sep 4<span>th</span>, 2011</time>\n \n
|
204
|
+
\ </p>\n \n </header>\n\n\n <div class=\"entry-content\"><p>We recently
|
205
|
+
started using <a href=\"http://postmarkapp.com\">PostMark</a> on <a href=\"http://www.kickofflabs.com\">KickoffLabs</a>.
|
206
|
+
So far the service has been excellent. Unfortunately, not all of our emails
|
207
|
+
fit their terms of service. I looked around for how configure an addition SMTP
|
208
|
+
server via Action Mailer (and Mail gem). Surprisingly, this is not supported.</p>\n\n</div>\n
|
209
|
+
\ \n \n <footer>\n <a rel=\"full-article\" href=\"/multiple-smtp-servers-with-action-mailer\">Read
|
210
|
+
on →</a>\n </footer>\n \n\n\n\n\n </article>\n \n <div class=\"pagination\">\n
|
211
|
+
\ \n <a class=\"prev\" href=\"/page/2/\">← Older</a>\n \n <a
|
212
|
+
href=\"/blog/archives\">Blog Archives</a>\n \n </div>\n</div>\n </div>\n
|
213
|
+
\ </div>\n <footer role=\"contentinfo\"><p>\n Copyright © 2012 - Scott
|
214
|
+
Watermasysk -\n <span class=\"credit\">Powered by <a href=\"http://octopress.org\">Octopress</a>
|
215
|
+
and <a href=\"http://heroku.com\">Heroku</a></span>\n</p>\n\n</footer>\n \n\n<script
|
216
|
+
type=\"text/javascript\">\n var disqus_shortname = 'wwwscottw';\n \n
|
217
|
+
\ \n var disqus_script = 'count.js';\n \n (function ()
|
218
|
+
{\n var dsq = document.createElement('script'); dsq.type = 'text/javascript';
|
219
|
+
dsq.async = true;\n dsq.src = 'http://' + disqus_shortname + '.disqus.com/'
|
220
|
+
+ disqus_script;\n (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);\n
|
221
|
+
\ }());\n</script>\n\n\n\n\n\n <script type=\"text/javascript\">\n (function()
|
222
|
+
{\n var script = document.createElement('script'); script.type = 'text/javascript';
|
223
|
+
script.async = true;\n script.src = 'https://apis.google.com/js/plusone.js';\n
|
224
|
+
\ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script,
|
225
|
+
s);\n })();\n </script>\n\n\n\n <script type=\"text/javascript\">\n (function(){\n
|
226
|
+
\ var twitterWidgets = document.createElement('script');\n twitterWidgets.type
|
227
|
+
= 'text/javascript';\n twitterWidgets.async = true;\n twitterWidgets.src
|
228
|
+
= 'http://platform.twitter.com/widgets.js';\n document.getElementsByTagName('head')[0].appendChild(twitterWidgets);\n
|
229
|
+
\ })();\n </script>\n\n\n\n\n\n</body>\n</html>\n"
|
230
|
+
http_version: '1.1'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unwind
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &70247991506280 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70247991506280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: vcr
|
27
|
-
requirement: &
|
27
|
+
requirement: &70247991505660 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70247991505660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: fakeweb
|
38
|
-
requirement: &
|
38
|
+
requirement: &70247991505040 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70247991505040
|
47
47
|
description: ! "\t\t\t\t\t\t\t\t\t\tFollows a chain of redirects and reports back
|
48
48
|
on all the steps. \n\t\t\t\t\t\t\t\t\t\tHeavily inspired by John Nunemaker's blog
|
49
49
|
post.\n\t\t\t\t\t\t\t\t\t\thttp://railstips.org/blog/archives/2009/03/04/following-redirects-with-nethttp/\n"
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- lib/unwind/version.rb
|
63
63
|
- test/redirect_follower_test.rb
|
64
64
|
- unwind.gemspec
|
65
|
+
- vcr_cassettes/no_redirect.yml
|
65
66
|
- vcr_cassettes/xZVND1.yml
|
66
67
|
homepage: ''
|
67
68
|
licenses: []
|