rdaneel 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +25 -7
- data/VERSION +1 -1
- data/features/get_without_cache.feature +37 -1
- data/lib/rdaneel.rb +17 -13
- data/spec/optional/concurrent_load_spec.rb +104 -0
- data/spec/optional/fixtures/tl_gd_urls.txt +146 -0
- data/spec/optional/fixtures/twitlonger_com_urls.txt +147 -0
- data/spec/{streamed_content_spec.rb → optional/streamed_content_spec.rb} +1 -1
- metadata +11 -7
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
gem.email = ["edgargonzalez@gmail.com", "anibalrojas@gmail.com"]
|
11
11
|
gem.homepage = "http://github.com/hasmanydevelopers/RDaneel"
|
12
12
|
gem.authors = ["Edgar Gonzalez", "Anibal Rojas"]
|
13
|
-
gem.add_dependency("em-http-request", ">= 0.2.
|
13
|
+
gem.add_dependency("em-http-request", ">= 0.2.12")
|
14
14
|
gem.add_dependency('robot_rules', '>= 0.9.3')
|
15
15
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
16
16
|
gem.add_development_dependency "cucumber", ">= 0.8.5"
|
@@ -23,25 +23,43 @@ rescue LoadError
|
|
23
23
|
end
|
24
24
|
|
25
25
|
require 'cucumber/rake/task'
|
26
|
-
|
26
|
+
|
27
|
+
desc "Run Cucumber features with RCov"
|
28
|
+
Cucumber::Rake::Task.new(:features_rcov) do |t|
|
27
29
|
t.cucumber_opts = "--format pretty" # Any valid command line option can go here.
|
28
30
|
t.rcov = true
|
29
31
|
t.rcov_opts = %w{--exclude gems\/,spec\/,features\/ --aggregate coverage.data}
|
30
32
|
end
|
31
33
|
|
34
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
35
|
+
t.cucumber_opts = "--format pretty" # Any valid command line option can go here.
|
36
|
+
end
|
37
|
+
|
38
|
+
|
32
39
|
require 'spec/rake/spectask'
|
33
|
-
Spec::Rake::SpecTask.new(:
|
40
|
+
Spec::Rake::SpecTask.new(:spec_rcov) do |spec|
|
34
41
|
spec.libs << 'lib' << 'spec'
|
35
|
-
spec.spec_files = FileList['spec
|
42
|
+
spec.spec_files = FileList['spec/*_spec.rb']
|
36
43
|
spec.rcov = true
|
37
44
|
spec.rcov_opts = %w{--exclude gems\/,spec\/,features\/ --aggregate coverage.data}
|
38
45
|
end
|
39
46
|
|
40
|
-
|
47
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
48
|
+
spec.libs << 'lib' << 'spec'
|
49
|
+
spec.spec_files = FileList['spec/*_spec.rb']
|
50
|
+
end
|
51
|
+
|
52
|
+
desc "Run optional specs (internet access)"
|
53
|
+
Spec::Rake::SpecTask.new(:spec_optional) do |spec|
|
54
|
+
spec.libs << 'lib' << 'spec'
|
55
|
+
spec.spec_files = FileList['spec/optional/*_spec.rb']
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "Run both specs and features with RCov"
|
41
59
|
task :all_tests do |t|
|
42
60
|
rm "coverage.data" if File.exist?("coverage.data")
|
43
|
-
Rake::Task['
|
44
|
-
Rake::Task[
|
61
|
+
Rake::Task['spec_rcov'].invoke
|
62
|
+
Rake::Task['features_rcov'].invoke
|
45
63
|
end
|
46
64
|
|
47
65
|
task :features => :check_dependencies
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
@@ -139,7 +139,7 @@ Feature: get a url without using cache
|
|
139
139
|
| 200 | /robots.txt |
|
140
140
|
| 302 | /redirect_me |
|
141
141
|
|
142
|
-
Scenario: the url to fetch is redirected to unreacheable
|
142
|
+
Scenario: the url to fetch is redirected to unreacheable port
|
143
143
|
Given a robots.txt that allows RDaneel
|
144
144
|
And a HelloWorld url
|
145
145
|
And a "/redirect_me" url that redirects 301 to "http://127.0.0.1:3211/unreacheable" url
|
@@ -153,3 +153,39 @@ Feature: get a url without using cache
|
|
153
153
|
| 200 | /robots.txt |
|
154
154
|
| 301 | /redirect_me |
|
155
155
|
|
156
|
+
Scenario: the url to fetch is redirected to unreacheable host
|
157
|
+
Given a robots.txt that allows RDaneel
|
158
|
+
And a HelloWorld url
|
159
|
+
And a "/redirect_me" url that redirects 301 to "http://wrongserver/unreacheable" url
|
160
|
+
When I get the "/redirect_me" url following a maximum of 3 redirects
|
161
|
+
Then I should get a "unable to resolve server address" error
|
162
|
+
And I should get 1 redirects
|
163
|
+
And The redirects sequence should be:
|
164
|
+
| http://127.0.0.1:3210/redirect_me |
|
165
|
+
And The requests sequence should be:
|
166
|
+
| status | path |
|
167
|
+
| 200 | /robots.txt |
|
168
|
+
| 301 | /redirect_me |
|
169
|
+
|
170
|
+
Scenario: the robots.txt for the url to fetch is redirected to unreacheable host:port
|
171
|
+
Given a "/robots.txt" url that redirects 301 to "http://127.0.0.1:3211/unreacheable" url
|
172
|
+
And a HelloWorld url
|
173
|
+
When I get the "/hello_world" url following a maximum of 3 redirects
|
174
|
+
Then I should get the content for HelloWorld url
|
175
|
+
And I should get 0 redirects
|
176
|
+
And The requests sequence should be:
|
177
|
+
| status | path |
|
178
|
+
| 301 | /robots.txt |
|
179
|
+
| 200 | /hello_world |
|
180
|
+
|
181
|
+
Scenario: the robots.txt for the url to fetch is redirected to unreacheable host
|
182
|
+
Given a "/robots.txt" url that redirects 301 to "http://wrongserver/unreacheable" url
|
183
|
+
And a HelloWorld url
|
184
|
+
When I get the "/hello_world" url following a maximum of 3 redirects
|
185
|
+
Then I should get the content for HelloWorld url
|
186
|
+
And I should get 0 redirects
|
187
|
+
And The requests sequence should be:
|
188
|
+
| status | path |
|
189
|
+
| 301 | /robots.txt |
|
190
|
+
| 200 | /hello_world |
|
191
|
+
|
data/lib/rdaneel.rb
CHANGED
@@ -210,19 +210,23 @@ class RDaneel
|
|
210
210
|
def verbose(message, client = nil, *args)
|
211
211
|
return unless @verbose
|
212
212
|
message.each { |l| hashed_puts('*', l) }
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
213
|
+
if client
|
214
|
+
args.each do |a|
|
215
|
+
case a
|
216
|
+
when :status
|
217
|
+
if client.response_header.status == 0
|
218
|
+
hashed_puts('< Status:', '0 (timeout)')
|
219
|
+
else
|
220
|
+
hashed_puts('< Status:', client.response_header.status)
|
221
|
+
end
|
222
|
+
when :request # this is a options hash
|
223
|
+
if client.options
|
224
|
+
headers = client.options[:head]
|
225
|
+
headers.each { |k,v| hashed_puts('>', "#{k}: #{v}") } if headers
|
226
|
+
end
|
227
|
+
when :response # this is an array
|
228
|
+
client.response_header.each { |r| hashed_puts('<', "#{r[0]}: #{r[1]}") }
|
229
|
+
end
|
226
230
|
end
|
227
231
|
end
|
228
232
|
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "RDaneel when access a lot of urls in parallel for twitlonger.com" do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Ubuntu/10.04 Chromium/7.0.513.0 Chrome/7.0.513.0 Safari/534.7'
|
7
|
+
@http_accept = 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8'
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
RDaneel.robots_cache = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "and urls are not redirected" do
|
15
|
+
|
16
|
+
before(:each) do
|
17
|
+
@urls_file = File.expand_path(File.dirname(__FILE__) + '/fixtures/twitlonger_com_urls.txt')
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should get the content for each url" do
|
21
|
+
RDaneel.robots_cache = {}
|
22
|
+
RDaneel.robots_cache["http://www.twitlonger.com/robots.txt"] = ""
|
23
|
+
successes = 0
|
24
|
+
failures = 0
|
25
|
+
urls_in_queue = 0
|
26
|
+
total_urls = 0
|
27
|
+
EM.run do
|
28
|
+
File.open(@urls_file).each do |url|
|
29
|
+
unless url.nil? || url.strip.empty?
|
30
|
+
r = RDaneel.new(url)
|
31
|
+
r.callback do
|
32
|
+
successes += 1
|
33
|
+
urls_in_queue -= 1
|
34
|
+
EM.stop if urls_in_queue == 0
|
35
|
+
end
|
36
|
+
r.errback do
|
37
|
+
failures += 1
|
38
|
+
urls_in_queue -= 1
|
39
|
+
EM.stop if urls_in_queue == 0
|
40
|
+
end
|
41
|
+
r.get(:redirects => 10, :timeout => 20,
|
42
|
+
:head => {
|
43
|
+
'user-agent' => @user_agent,
|
44
|
+
'http_accept' => @http_accept
|
45
|
+
}
|
46
|
+
)
|
47
|
+
urls_in_queue += 1
|
48
|
+
total_urls += 1
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
successes.should == total_urls
|
53
|
+
failures.should == 0
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "and urls are redirected" do
|
59
|
+
|
60
|
+
before(:each) do
|
61
|
+
@urls_file = File.expand_path(File.dirname(__FILE__) + '/fixtures/tl_gd_urls.txt')
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should get the content for each url" do
|
65
|
+
RDaneel.robots_cache = {}
|
66
|
+
RDaneel.robots_cache["http://www.twitlonger.com/robots.txt"] = ""
|
67
|
+
RDaneel.robots_cache["http://tl.gd/robots.txt"] = ""
|
68
|
+
successes = 0
|
69
|
+
failures = 0
|
70
|
+
urls_in_queue = 0
|
71
|
+
total_urls = 0
|
72
|
+
EM.run do
|
73
|
+
File.open(@urls_file).each do |url|
|
74
|
+
unless url.nil? || url.strip.empty?
|
75
|
+
r = RDaneel.new(url)
|
76
|
+
r.callback do
|
77
|
+
successes += 1
|
78
|
+
urls_in_queue -= 1
|
79
|
+
EM.stop if urls_in_queue == 0
|
80
|
+
end
|
81
|
+
r.errback do
|
82
|
+
failures += 1
|
83
|
+
urls_in_queue -= 1
|
84
|
+
EM.stop if urls_in_queue == 0
|
85
|
+
end
|
86
|
+
r.get(:redirects => 10, :timeout => 20,
|
87
|
+
:head => {
|
88
|
+
'user-agent' => @user_agent,
|
89
|
+
'http_accept' => @http_accept
|
90
|
+
}
|
91
|
+
)
|
92
|
+
urls_in_queue += 1
|
93
|
+
total_urls += 1
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
successes.should == total_urls
|
98
|
+
failures.should == 0
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
@@ -0,0 +1,146 @@
|
|
1
|
+
http://tl.gd/3fgffg
|
2
|
+
http://tl.gd/3fgffj
|
3
|
+
http://tl.gd/3f9hua
|
4
|
+
http://tl.gd/3fgfgn
|
5
|
+
http://tl.gd/3fgfgv
|
6
|
+
http://tl.gd/3fgfh9
|
7
|
+
http://tl.gd/3fgfh7
|
8
|
+
http://tl.gd/3fgfh3
|
9
|
+
http://tl.gd/3fgfh6
|
10
|
+
http://tl.gd/3fgffi
|
11
|
+
http://tl.gd/3fgfg7
|
12
|
+
http://tl.gd/3fgfhr
|
13
|
+
http://tl.gd/3fgfhq
|
14
|
+
http://tl.gd/3fgfhu
|
15
|
+
http://tl.gd/3fgfhm
|
16
|
+
http://tl.gd/3fgfga
|
17
|
+
http://tl.gd/3fgfi8
|
18
|
+
http://tl.gd/3fgfi3
|
19
|
+
http://tl.gd/3fgfie
|
20
|
+
http://tl.gd/3fgfib
|
21
|
+
http://tl.gd/3ffsvd
|
22
|
+
http://tl.gd/3fgfj3
|
23
|
+
http://tl.gd/3fgfj7
|
24
|
+
http://tl.gd/3fgfit
|
25
|
+
http://tl.gd/3fgfjc
|
26
|
+
http://tl.gd/3fgfja
|
27
|
+
http://tl.gd/3fgfln
|
28
|
+
http://tl.gd/3fgfll
|
29
|
+
http://tl.gd/3fgflv
|
30
|
+
http://tl.gd/3fgfm3
|
31
|
+
http://tl.gd/3fgflo
|
32
|
+
http://tl.gd/3fgfm4
|
33
|
+
http://tl.gd/3fgfmd
|
34
|
+
http://tl.gd/3bkn3t
|
35
|
+
http://tl.gd/3fgfmk
|
36
|
+
http://tl.gd/3fgfn0
|
37
|
+
http://tl.gd/3ffsuj
|
38
|
+
http://tl.gd/3fgfng
|
39
|
+
http://tl.gd/3fgfnh
|
40
|
+
http://tl.gd/3fgfnm
|
41
|
+
http://tl.gd/3fgfnj
|
42
|
+
http://tl.gd/3fgfnt
|
43
|
+
http://tl.gd/3fgfnu
|
44
|
+
http://tl.gd/3fgfnn
|
45
|
+
http://tl.gd/3fgfo1
|
46
|
+
http://tl.gd/3fgfo4
|
47
|
+
http://tl.gd/3fgfo3
|
48
|
+
http://tl.gd/3fgfof
|
49
|
+
http://tl.gd/3fgfok
|
50
|
+
http://tl.gd/3fgfom
|
51
|
+
http://tl.gd/3fgfor
|
52
|
+
http://tl.gd/3fgfop
|
53
|
+
http://tl.gd/3fgfpd
|
54
|
+
http://tl.gd/3fgfph
|
55
|
+
http://tl.gd/3fgfpg
|
56
|
+
http://tl.gd/3fgfp5
|
57
|
+
http://tl.gd/3fgfp8
|
58
|
+
http://tl.gd/3fgfjj
|
59
|
+
http://tl.gd/3fgfp7
|
60
|
+
http://tl.gd/3fgfr0
|
61
|
+
http://tl.gd/3fgfri
|
62
|
+
http://tl.gd/3fgfs6
|
63
|
+
http://tl.gd/3ff20b
|
64
|
+
http://tl.gd/3ffimm
|
65
|
+
http://tl.gd/3ff2ok
|
66
|
+
http://tl.gd/3fgfrs
|
67
|
+
http://tl.gd/3fgfs3
|
68
|
+
http://tl.gd/3fgfs2
|
69
|
+
http://tl.gd/3fgfsc
|
70
|
+
http://tl.gd/3fgfso
|
71
|
+
http://tl.gd/3fgfsn
|
72
|
+
http://tl.gd/3fgfst
|
73
|
+
http://tl.gd/3fgfta
|
74
|
+
http://tl.gd/3fgfte
|
75
|
+
http://tl.gd/3fgfrl
|
76
|
+
http://tl.gd/3fgftg
|
77
|
+
http://tl.gd/3fgfu8
|
78
|
+
http://tl.gd/3ffm98
|
79
|
+
http://tl.gd/3fgg08
|
80
|
+
http://tl.gd/3fgg0k
|
81
|
+
http://tl.gd/3fgg0e
|
82
|
+
http://tl.gd/3fgg06
|
83
|
+
http://tl.gd/3fa67d
|
84
|
+
http://tl.gd/3fgg0b
|
85
|
+
http://tl.gd/3fgg0q
|
86
|
+
http://tl.gd/3fgg0i
|
87
|
+
http://tl.gd/3fgg12
|
88
|
+
http://tl.gd/3fgfj0
|
89
|
+
http://tl.gd/3fgg1d
|
90
|
+
http://tl.gd/3fgg18
|
91
|
+
http://tl.gd/3fgg1g
|
92
|
+
http://tl.gd/3fgg20
|
93
|
+
http://tl.gd/3fgg1p
|
94
|
+
http://tl.gd/3fgg1t
|
95
|
+
http://tl.gd/3fgg24
|
96
|
+
http://tl.gd/3fgg25
|
97
|
+
http://tl.gd/3fgg2b
|
98
|
+
http://tl.gd/3fgg2a
|
99
|
+
http://tl.gd/3fgg2g
|
100
|
+
http://tl.gd/3fgg2f
|
101
|
+
http://tl.gd/3fgg1v
|
102
|
+
http://tl.gd/3fgg2l
|
103
|
+
http://tl.gd/3fgg2s
|
104
|
+
http://tl.gd/3fgg2u
|
105
|
+
http://tl.gd/3fgg3b
|
106
|
+
http://tl.gd/3fgg34
|
107
|
+
http://tl.gd/3fgg5j
|
108
|
+
http://tl.gd/3fgg59
|
109
|
+
http://tl.gd/3fgg5b
|
110
|
+
http://tl.gd/3fgg5c
|
111
|
+
http://tl.gd/3fgg5m
|
112
|
+
http://tl.gd/3fgg61
|
113
|
+
http://tl.gd/3fgg5r
|
114
|
+
http://tl.gd/3fgg67
|
115
|
+
http://tl.gd/3fgg6e
|
116
|
+
http://tl.gd/3fgg69
|
117
|
+
http://tl.gd/3fgg64
|
118
|
+
http://tl.gd/3fgg6q
|
119
|
+
http://tl.gd/3fgg73
|
120
|
+
http://tl.gd/3fgem2
|
121
|
+
http://tl.gd/3fgg74
|
122
|
+
http://tl.gd/3fgg7d
|
123
|
+
http://tl.gd/3fgg79
|
124
|
+
http://tl.gd/3fgg7e
|
125
|
+
http://tl.gd/3fgg7a
|
126
|
+
http://tl.gd/3fgg78
|
127
|
+
http://tl.gd/3fgg76
|
128
|
+
http://tl.gd/3fgg77
|
129
|
+
http://tl.gd/3fgg6f
|
130
|
+
http://tl.gd/3fgg7g
|
131
|
+
http://tl.gd/3fgg7c
|
132
|
+
http://tl.gd/3668o7
|
133
|
+
http://tl.gd/3fgg8i
|
134
|
+
http://tl.gd/3fgg8d
|
135
|
+
http://tl.gd/3fgcrq
|
136
|
+
http://tl.gd/3fgg8m
|
137
|
+
http://tl.gd/3fgg8e
|
138
|
+
http://tl.gd/3fggbv
|
139
|
+
http://tl.gd/3fggc0
|
140
|
+
http://tl.gd/3fggbs
|
141
|
+
http://tl.gd/3fggbp
|
142
|
+
http://tl.gd/3fgga0
|
143
|
+
http://tl.gd/3fggc3
|
144
|
+
http://tl.gd/3fggc1
|
145
|
+
http://tl.gd/3fggbt
|
146
|
+
http://tl.gd/3fgggk
|
@@ -0,0 +1,147 @@
|
|
1
|
+
http://www.twitlonger.com/show/3fgffg
|
2
|
+
http://www.twitlonger.com/show/3fgffj
|
3
|
+
http://www.twitlonger.com/show/3f9hua
|
4
|
+
http://www.twitlonger.com/show/3fgfgn
|
5
|
+
http://www.twitlonger.com/show/3fgfgv
|
6
|
+
http://www.twitlonger.com/show/3fgfh9
|
7
|
+
http://www.twitlonger.com/show/3fgfh7
|
8
|
+
http://www.twitlonger.com/show/3fgfh3
|
9
|
+
http://www.twitlonger.com/show/3fgfh6
|
10
|
+
http://www.twitlonger.com/show/3fgffi
|
11
|
+
http://www.twitlonger.com/show/3fgfg7
|
12
|
+
http://www.twitlonger.com/show/3fgfhr
|
13
|
+
http://www.twitlonger.com/show/3fgfhq
|
14
|
+
http://www.twitlonger.com/show/3fgfhu
|
15
|
+
http://www.twitlonger.com/show/3fgfhm
|
16
|
+
http://www.twitlonger.com/show/3fgfga
|
17
|
+
http://www.twitlonger.com/show/3fgfi8
|
18
|
+
http://www.twitlonger.com/show/3fgfi3
|
19
|
+
http://www.twitlonger.com/show/3fgfie
|
20
|
+
http://www.twitlonger.com/show/3fgfib
|
21
|
+
http://www.twitlonger.com/show/3ffsvd
|
22
|
+
http://www.twitlonger.com/show/3fgfj3
|
23
|
+
http://www.twitlonger.com/show/3fgfj7
|
24
|
+
http://www.twitlonger.com/show/3fgfit
|
25
|
+
http://www.twitlonger.com/show/3fgfjc
|
26
|
+
http://www.twitlonger.com/show/3fgfja
|
27
|
+
http://www.twitlonger.com/show/3fgfln
|
28
|
+
http://www.twitlonger.com/show/3fgfll
|
29
|
+
http://www.twitlonger.com/show/3fgflv
|
30
|
+
http://www.twitlonger.com/show/3fgfm3
|
31
|
+
http://www.twitlonger.com/show/3fgflo
|
32
|
+
http://www.twitlonger.com/show/3fgfm4
|
33
|
+
http://www.twitlonger.com/show/3fgfmd
|
34
|
+
http://www.twitlonger.com/show/3bkn3t
|
35
|
+
http://www.twitlonger.com/show/3fgfmk
|
36
|
+
http://www.twitlonger.com/show/3fgfn0
|
37
|
+
http://www.twitlonger.com/show/3ffsuj
|
38
|
+
http://www.twitlonger.com/show/3fgfng
|
39
|
+
http://www.twitlonger.com/show/3fgfnh
|
40
|
+
http://www.twitlonger.com/show/3fgfnm
|
41
|
+
http://www.twitlonger.com/show/3fgfnj
|
42
|
+
http://www.twitlonger.com/show/3fgfnt
|
43
|
+
http://www.twitlonger.com/show/3fgfnu
|
44
|
+
http://www.twitlonger.com/show/3fgfnn
|
45
|
+
http://www.twitlonger.com/show/3fgfo1
|
46
|
+
http://www.twitlonger.com/show/3fgfo4
|
47
|
+
http://www.twitlonger.com/show/3fgfo3
|
48
|
+
http://www.twitlonger.com/show/3fgfof
|
49
|
+
http://www.twitlonger.com/show/3fgfok
|
50
|
+
http://www.twitlonger.com/show/3fgfom
|
51
|
+
http://www.twitlonger.com/show/3fgfor
|
52
|
+
http://www.twitlonger.com/show/3fgfop
|
53
|
+
http://www.twitlonger.com/show/3fgfpd
|
54
|
+
http://www.twitlonger.com/show/3fgfph
|
55
|
+
http://www.twitlonger.com/show/3fgfpg
|
56
|
+
http://www.twitlonger.com/show/3fgfp5
|
57
|
+
http://www.twitlonger.com/show/3fgfp8
|
58
|
+
http://www.twitlonger.com/show/3fgfjj
|
59
|
+
http://www.twitlonger.com/show/3fgfp7
|
60
|
+
http://www.twitlonger.com/show/3fgfr0
|
61
|
+
http://www.twitlonger.com/show/3fgfri
|
62
|
+
http://www.twitlonger.com/show/3fgfs6
|
63
|
+
http://www.twitlonger.com/show/3ff20b
|
64
|
+
http://www.twitlonger.com/show/3ffimm
|
65
|
+
http://www.twitlonger.com/show/3ff2ok
|
66
|
+
http://www.twitlonger.com/show/3fgfrs
|
67
|
+
http://www.twitlonger.com/show/3fgfs3
|
68
|
+
http://www.twitlonger.com/show/3fgfs2
|
69
|
+
http://www.twitlonger.com/show/3fgfsc
|
70
|
+
http://www.twitlonger.com/show/3fgfso
|
71
|
+
http://www.twitlonger.com/show/3fgfsn
|
72
|
+
http://www.twitlonger.com/show/3fgfst
|
73
|
+
http://www.twitlonger.com/show/3fgfta
|
74
|
+
http://www.twitlonger.com/show/3fgfte
|
75
|
+
http://www.twitlonger.com/show/3fgfrl
|
76
|
+
http://www.twitlonger.com/show/3fgftg
|
77
|
+
http://www.twitlonger.com/show/3fgfu8
|
78
|
+
http://www.twitlonger.com/show/3ffm98
|
79
|
+
http://www.twitlonger.com/show/3fgg08
|
80
|
+
http://www.twitlonger.com/show/3fgg0k
|
81
|
+
http://www.twitlonger.com/show/3fgg0e
|
82
|
+
http://www.twitlonger.com/show/3fgg06
|
83
|
+
http://www.twitlonger.com/show/3fa67d
|
84
|
+
http://www.twitlonger.com/show/3fgg0b
|
85
|
+
http://www.twitlonger.com/show/3fgg0q
|
86
|
+
http://www.twitlonger.com/show/3fgg0i
|
87
|
+
http://www.twitlonger.com/show/3fgg12
|
88
|
+
http://www.twitlonger.com/show/3fgfj0
|
89
|
+
http://www.twitlonger.com/show/3fgg1d
|
90
|
+
http://www.twitlonger.com/show/3fgg18
|
91
|
+
http://www.twitlonger.com/show/3fgg1g
|
92
|
+
http://www.twitlonger.com/show/3fgg20
|
93
|
+
http://www.twitlonger.com/show/3fgg1p
|
94
|
+
http://www.twitlonger.com/show/3fgg1t
|
95
|
+
http://www.twitlonger.com/show/3fgg24
|
96
|
+
http://www.twitlonger.com/show/3fgg25
|
97
|
+
http://www.twitlonger.com/show/3fgg2b
|
98
|
+
http://www.twitlonger.com/show/3fgg2a
|
99
|
+
http://www.twitlonger.com/show/3fgg2g
|
100
|
+
http://www.twitlonger.com/show/3fgg2f
|
101
|
+
http://www.twitlonger.com/show/3fgg1v
|
102
|
+
http://www.twitlonger.com/show/3fgg2l
|
103
|
+
http://www.twitlonger.com/show/3fgg2s
|
104
|
+
http://www.twitlonger.com/show/3fgg2u
|
105
|
+
http://www.twitlonger.com/show/3fgg3b
|
106
|
+
http://www.twitlonger.com/show/3fgg34
|
107
|
+
http://www.twitlonger.com/show/3fgg5j
|
108
|
+
http://www.twitlonger.com/show/3fgg59
|
109
|
+
http://www.twitlonger.com/show/3fgg5b
|
110
|
+
http://www.twitlonger.com/show/3fgg5c
|
111
|
+
http://www.twitlonger.com/show/3fgg5m
|
112
|
+
http://www.twitlonger.com/show/3fgg61
|
113
|
+
http://www.twitlonger.com/show/3fgg5r
|
114
|
+
http://www.twitlonger.com/show/3fgg67
|
115
|
+
http://www.twitlonger.com/show/3fgg6e
|
116
|
+
http://www.twitlonger.com/show/3fgg69
|
117
|
+
http://www.twitlonger.com/show/3fgg64
|
118
|
+
http://www.twitlonger.com/show/3fgg6q
|
119
|
+
http://www.twitlonger.com/show/3fgg73
|
120
|
+
http://www.twitlonger.com/show/3fgem2
|
121
|
+
http://www.twitlonger.com/show/3fgg74
|
122
|
+
http://www.twitlonger.com/show/3fgg7d
|
123
|
+
http://www.twitlonger.com/show/3fgg79
|
124
|
+
http://www.twitlonger.com/show/3fgg7e
|
125
|
+
http://www.twitlonger.com/show/3fgg7a
|
126
|
+
http://www.twitlonger.com/show/3fgg78
|
127
|
+
http://www.twitlonger.com/show/3fgg76
|
128
|
+
http://www.twitlonger.com/show/3fgg77
|
129
|
+
http://www.twitlonger.com/show/3fgg6f
|
130
|
+
http://www.twitlonger.com/show/3fgg7g
|
131
|
+
http://www.twitlonger.com/show/3fgg7c
|
132
|
+
http://www.twitlonger.com/show/3668o7
|
133
|
+
http://www.twitlonger.com/show/3fgg8i
|
134
|
+
http://www.twitlonger.com/show/3fgg8d
|
135
|
+
http://www.twitlonger.com/show/3fgcrq
|
136
|
+
http://www.twitlonger.com/show/3fgg8m
|
137
|
+
http://www.twitlonger.com/show/3fgg8e
|
138
|
+
http://www.twitlonger.com/show/3fggbv
|
139
|
+
http://www.twitlonger.com/show/3fggc0
|
140
|
+
http://www.twitlonger.com/show/3fggbs
|
141
|
+
http://www.twitlonger.com/show/3fggbp
|
142
|
+
http://www.twitlonger.com/show/3fgga0
|
143
|
+
http://www.twitlonger.com/show/3fggc3
|
144
|
+
http://www.twitlonger.com/show/3fggc1
|
145
|
+
http://www.twitlonger.com/show/3fggbt
|
146
|
+
http://www.twitlonger.com/show/3fgggk
|
147
|
+
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 3
|
9
|
+
version: 0.2.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Edgar Gonzalez
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-09-13 00:00:00 -04:30
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -28,8 +28,8 @@ dependencies:
|
|
28
28
|
segments:
|
29
29
|
- 0
|
30
30
|
- 2
|
31
|
-
-
|
32
|
-
version: 0.2.
|
31
|
+
- 12
|
32
|
+
version: 0.2.12
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
35
|
- !ruby/object:Gem::Dependency
|
@@ -113,10 +113,13 @@ files:
|
|
113
113
|
- features/support/burrito.rb
|
114
114
|
- features/support/env.rb
|
115
115
|
- lib/rdaneel.rb
|
116
|
+
- spec/optional/concurrent_load_spec.rb
|
117
|
+
- spec/optional/fixtures/tl_gd_urls.txt
|
118
|
+
- spec/optional/fixtures/twitlonger_com_urls.txt
|
119
|
+
- spec/optional/streamed_content_spec.rb
|
116
120
|
- spec/rdaneel_spec.rb
|
117
121
|
- spec/spec.opts
|
118
122
|
- spec/spec_helper.rb
|
119
|
-
- spec/streamed_content_spec.rb
|
120
123
|
has_rdoc: true
|
121
124
|
homepage: http://github.com/hasmanydevelopers/RDaneel
|
122
125
|
licenses: []
|
@@ -148,6 +151,7 @@ signing_key:
|
|
148
151
|
specification_version: 3
|
149
152
|
summary: Obey robots.txt on top of em-http-request (Asynchronous HTTP Client)
|
150
153
|
test_files:
|
154
|
+
- spec/optional/concurrent_load_spec.rb
|
155
|
+
- spec/optional/streamed_content_spec.rb
|
151
156
|
- spec/spec_helper.rb
|
152
|
-
- spec/streamed_content_spec.rb
|
153
157
|
- spec/rdaneel_spec.rb
|