polipus 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/lib/polipus/queue_overflow/manager.rb +2 -0
- data/lib/polipus/version.rb +1 -1
- data/polipus.gemspec +18 -15
- data/spec/http_spec.rb +4 -4
- data/spec/page_spec.rb +24 -15
- data/spec/queue_overflow_manager_spec.rb +3 -0
- metadata +119 -40
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NjU0MmViNGYzZWVjNDBkOTI1MDMwNjRlMTE0ZDVmN2RjODc4MGI2Mw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YjQ3OTZmMThiNjI3ZTRiNTUxNWFlZjA1MGFiOGRhZTcxYzdiYTY0Ng==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
Zjc0N2Q2NmM3Yzg0OTg5NTEwYjg2N2Q5ODk5ZjU2OWQzZWQyMzEwNjk4NmJi
|
10
|
+
NzAxYzFlNDhhZGE1YzA0MGFiYjJiOWVlZThhMTFmZTM0YzAxZDE0MWE4MzAw
|
11
|
+
NjU5NWI5OThjNWE2ZWMzNThmNDU5MmZkY2Q0ODAzNDdkYmNjOTU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZWQ0MzFiMWYxNGRkNzAxM2FmZmFlYmVmNDljYTJjOGQxZGU4NjZjYTQ1ZjZi
|
14
|
+
ZDU3ZGNjMDc4Njg1MzJkMjFjYjQwYjZjNGNlNTk2ODBjN2MxMTI1ZGMwY2Ix
|
15
|
+
NjM4ZWFlY2U1NWYzZGE0NjFjNWZlYWE5Y2Y2NTA4ODk3NTIwMzU=
|
@@ -7,6 +7,7 @@ module Polipus
|
|
7
7
|
@main_q = main_q
|
8
8
|
@adapter = @polipus.queue_overflow_adapter
|
9
9
|
@item_limit = item_limit
|
10
|
+
@redis = @polipus.redis
|
10
11
|
end
|
11
12
|
|
12
13
|
def url_filter &block
|
@@ -41,6 +42,7 @@ module Polipus
|
|
41
42
|
end
|
42
43
|
end
|
43
44
|
source.commit if source.respond_to? :commit
|
45
|
+
@redis.expire "polipus_queue_overflow-#{@polipus.job_name}.lock", 180
|
44
46
|
break if !message || source.empty?
|
45
47
|
}
|
46
48
|
performed
|
data/lib/polipus/version.rb
CHANGED
data/polipus.gemspec
CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.description = %q{
|
13
13
|
An easy to use distributed web-crawler framework based on Redis
|
14
14
|
}
|
15
|
+
s.licenses = ["MIT"]
|
15
16
|
|
16
17
|
s.rubyforge_project = "polipus"
|
17
18
|
|
@@ -20,23 +21,25 @@ Gem::Specification.new do |s|
|
|
20
21
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
22
|
s.require_paths = ["lib"]
|
22
23
|
|
23
|
-
s.
|
24
|
-
s.
|
25
|
-
s.
|
26
|
-
s.
|
27
|
-
s.
|
28
|
-
s.
|
24
|
+
s.add_runtime_dependency 'redis-bloomfilter', '~> 0.0', '>= 0.0.1'
|
25
|
+
s.add_runtime_dependency 'redis-queue', '~> 0.0', '>= 0.0.3'
|
26
|
+
s.add_runtime_dependency 'nokogiri', '~> 1.6', '>= 1.6.0'
|
27
|
+
s.add_runtime_dependency 'hiredis', '~> 0.4', '>= 0.4.5'
|
28
|
+
s.add_runtime_dependency 'redis', '~> 3.0', '>= 3.0.4'
|
29
|
+
s.add_runtime_dependency 'mongo', '~> 1.9', '>= 1.9.2'
|
30
|
+
|
29
31
|
if defined?(JRUBY_VERSION)
|
30
|
-
s.
|
32
|
+
s.add_runtime_dependency 'bson', '~> 1.9', '>= 1.9.2'
|
31
33
|
else
|
32
|
-
s.
|
34
|
+
s.add_runtime_dependency 'bson_ext', '~> 1.9', '>= 1.9.2'
|
33
35
|
end
|
34
|
-
s.
|
35
|
-
s.
|
36
|
-
|
37
|
-
s.add_development_dependency
|
38
|
-
s.add_development_dependency
|
39
|
-
s.add_development_dependency
|
40
|
-
s.add_development_dependency
|
36
|
+
s.add_runtime_dependency 'aws-s3', '~> 0.6', '>= 0.6.3'
|
37
|
+
s.add_runtime_dependency 'http-cookie', '~> 1.0', '>= 1.0.1'
|
38
|
+
|
39
|
+
s.add_development_dependency 'rspec', '~> 2.14', '>= 2.14.1'
|
40
|
+
s.add_development_dependency 'vcr', '~> 2.5', '>= 2.5.0'
|
41
|
+
s.add_development_dependency 'webmock', '>= 1.8.0', '< 1.12'
|
42
|
+
s.add_development_dependency 'flexmock', '~> 1.3', '>= 1.3.2'
|
43
|
+
|
41
44
|
|
42
45
|
end
|
data/spec/http_spec.rb
CHANGED
@@ -11,7 +11,7 @@ describe Polipus::HTTP do
|
|
11
11
|
http = Polipus::HTTP.new
|
12
12
|
page = http.fetch_page("http://sfbay.craigslist.org/apa/")
|
13
13
|
page.should be_an_instance_of(Polipus::Page)
|
14
|
-
page.doc.search("title").text.strip.should
|
14
|
+
page.doc.search("title").text.strip.should eq "SF bay area apts/housing for rent classifieds - craigslist"
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -22,9 +22,9 @@ describe Polipus::HTTP do
|
|
22
22
|
page = http.fetch_page("http://greenbytes.de/tech/tc/httpredirects/t300bodyandloc.asis")
|
23
23
|
|
24
24
|
page.should be_an_instance_of(Polipus::Page)
|
25
|
-
page.code.should be
|
26
|
-
page.url.to_s.should
|
27
|
-
page.body.strip.should
|
25
|
+
page.code.should be 200
|
26
|
+
page.url.to_s.should eq "http://greenbytes.de/tech/tc/httpredirects/300.txt"
|
27
|
+
page.body.strip.should eq "You have reached the target\r\nof a 300 redirect."
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
data/spec/page_spec.rb
CHANGED
@@ -2,21 +2,30 @@ require "spec_helper"
|
|
2
2
|
require "polipus/page"
|
3
3
|
|
4
4
|
describe Polipus::Page do
|
5
|
-
|
6
|
-
body = <<EOF
|
7
|
-
<html>
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
</html>
|
5
|
+
let(:page) do
|
6
|
+
body = <<EOF
|
7
|
+
<html>
|
8
|
+
<body>
|
9
|
+
<a href="/page/1">1</a>
|
10
|
+
<a href="/page/2">2</a>
|
11
|
+
<a href="http://www.google.com/page/3">3</a>
|
12
|
+
<a href="http://google.com/page/3">4</a>
|
13
|
+
<a href="http://not.google.com/page/3">4</a>
|
14
|
+
</body>
|
15
|
+
</html>
|
16
16
|
EOF
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
Polipus::Page.new 'http://www.google.com/',
|
18
|
+
code: 200,
|
19
|
+
body: body,
|
20
|
+
headers: {'content-type' => ['text/html']},
|
21
|
+
domain_aliases: %w(www.google.com google.com)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should be fetched' do
|
25
|
+
page.fetched?.should be_true
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should honor domain_aliases attribute' do
|
29
|
+
page.links.count.should be 4
|
21
30
|
end
|
22
31
|
end
|
@@ -9,9 +9,12 @@ describe Polipus::QueueOverflow::Manager do
|
|
9
9
|
@storage = Polipus::Storage.mongo_store(@mongo, '_test_pages')
|
10
10
|
@redis_q = Redis::Queue.new("queue_test","bp_queue_test", :redis => Redis.new())
|
11
11
|
@queue_overflow = Polipus::QueueOverflow.mongo_queue(nil, "queue_test")
|
12
|
+
@redis = Redis.new
|
12
13
|
@polipus = flexmock("polipus")
|
13
14
|
@polipus.should_receive(:queue_overflow_adapter).and_return(@queue_overflow)
|
14
15
|
@polipus.should_receive(:storage).and_return(@storage)
|
16
|
+
@polipus.should_receive(:redis).and_return(@redis)
|
17
|
+
@polipus.should_receive(:job_name).and_return("___test")
|
15
18
|
@manager = Polipus::QueueOverflow::Manager.new(@polipus, @redis_q, 10)
|
16
19
|
end
|
17
20
|
|
metadata
CHANGED
@@ -1,198 +1,276 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polipus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Laurita
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis-bloomfilter
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.0'
|
20
|
+
- - ! '>='
|
18
21
|
- !ruby/object:Gem::Version
|
19
22
|
version: 0.0.1
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.0'
|
30
|
+
- - ! '>='
|
25
31
|
- !ruby/object:Gem::Version
|
26
32
|
version: 0.0.1
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: redis-queue
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- -
|
37
|
+
- - ~>
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.0'
|
40
|
+
- - ! '>='
|
32
41
|
- !ruby/object:Gem::Version
|
33
42
|
version: 0.0.3
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
|
-
- -
|
47
|
+
- - ~>
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0.0'
|
50
|
+
- - ! '>='
|
39
51
|
- !ruby/object:Gem::Version
|
40
52
|
version: 0.0.3
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
54
|
name: nokogiri
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
44
56
|
requirements:
|
45
|
-
- -
|
57
|
+
- - ~>
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.6'
|
60
|
+
- - ! '>='
|
46
61
|
- !ruby/object:Gem::Version
|
47
62
|
version: 1.6.0
|
48
63
|
type: :runtime
|
49
64
|
prerelease: false
|
50
65
|
version_requirements: !ruby/object:Gem::Requirement
|
51
66
|
requirements:
|
52
|
-
- -
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.6'
|
70
|
+
- - ! '>='
|
53
71
|
- !ruby/object:Gem::Version
|
54
72
|
version: 1.6.0
|
55
73
|
- !ruby/object:Gem::Dependency
|
56
74
|
name: hiredis
|
57
75
|
requirement: !ruby/object:Gem::Requirement
|
58
76
|
requirements:
|
59
|
-
- -
|
77
|
+
- - ~>
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.4'
|
80
|
+
- - ! '>='
|
60
81
|
- !ruby/object:Gem::Version
|
61
82
|
version: 0.4.5
|
62
83
|
type: :runtime
|
63
84
|
prerelease: false
|
64
85
|
version_requirements: !ruby/object:Gem::Requirement
|
65
86
|
requirements:
|
66
|
-
- -
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.4'
|
90
|
+
- - ! '>='
|
67
91
|
- !ruby/object:Gem::Version
|
68
92
|
version: 0.4.5
|
69
93
|
- !ruby/object:Gem::Dependency
|
70
94
|
name: redis
|
71
95
|
requirement: !ruby/object:Gem::Requirement
|
72
96
|
requirements:
|
73
|
-
- -
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '3.0'
|
100
|
+
- - ! '>='
|
74
101
|
- !ruby/object:Gem::Version
|
75
102
|
version: 3.0.4
|
76
103
|
type: :runtime
|
77
104
|
prerelease: false
|
78
105
|
version_requirements: !ruby/object:Gem::Requirement
|
79
106
|
requirements:
|
80
|
-
- -
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '3.0'
|
110
|
+
- - ! '>='
|
81
111
|
- !ruby/object:Gem::Version
|
82
112
|
version: 3.0.4
|
83
113
|
- !ruby/object:Gem::Dependency
|
84
114
|
name: mongo
|
85
115
|
requirement: !ruby/object:Gem::Requirement
|
86
116
|
requirements:
|
87
|
-
- -
|
117
|
+
- - ~>
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '1.9'
|
120
|
+
- - ! '>='
|
88
121
|
- !ruby/object:Gem::Version
|
89
122
|
version: 1.9.2
|
90
123
|
type: :runtime
|
91
124
|
prerelease: false
|
92
125
|
version_requirements: !ruby/object:Gem::Requirement
|
93
126
|
requirements:
|
94
|
-
- -
|
127
|
+
- - ~>
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '1.9'
|
130
|
+
- - ! '>='
|
95
131
|
- !ruby/object:Gem::Version
|
96
132
|
version: 1.9.2
|
97
133
|
- !ruby/object:Gem::Dependency
|
98
134
|
name: bson_ext
|
99
135
|
requirement: !ruby/object:Gem::Requirement
|
100
136
|
requirements:
|
101
|
-
- -
|
137
|
+
- - ~>
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '1.9'
|
140
|
+
- - ! '>='
|
102
141
|
- !ruby/object:Gem::Version
|
103
142
|
version: 1.9.2
|
104
143
|
type: :runtime
|
105
144
|
prerelease: false
|
106
145
|
version_requirements: !ruby/object:Gem::Requirement
|
107
146
|
requirements:
|
108
|
-
- -
|
147
|
+
- - ~>
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '1.9'
|
150
|
+
- - ! '>='
|
109
151
|
- !ruby/object:Gem::Version
|
110
152
|
version: 1.9.2
|
111
153
|
- !ruby/object:Gem::Dependency
|
112
154
|
name: aws-s3
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
114
156
|
requirements:
|
115
|
-
- -
|
157
|
+
- - ~>
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.6'
|
160
|
+
- - ! '>='
|
116
161
|
- !ruby/object:Gem::Version
|
117
162
|
version: 0.6.3
|
118
163
|
type: :runtime
|
119
164
|
prerelease: false
|
120
165
|
version_requirements: !ruby/object:Gem::Requirement
|
121
166
|
requirements:
|
122
|
-
- -
|
167
|
+
- - ~>
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0.6'
|
170
|
+
- - ! '>='
|
123
171
|
- !ruby/object:Gem::Version
|
124
172
|
version: 0.6.3
|
125
173
|
- !ruby/object:Gem::Dependency
|
126
174
|
name: http-cookie
|
127
175
|
requirement: !ruby/object:Gem::Requirement
|
128
176
|
requirements:
|
129
|
-
- -
|
177
|
+
- - ~>
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '1.0'
|
180
|
+
- - ! '>='
|
130
181
|
- !ruby/object:Gem::Version
|
131
182
|
version: 1.0.1
|
132
183
|
type: :runtime
|
133
184
|
prerelease: false
|
134
185
|
version_requirements: !ruby/object:Gem::Requirement
|
135
186
|
requirements:
|
136
|
-
- -
|
187
|
+
- - ~>
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '1.0'
|
190
|
+
- - ! '>='
|
137
191
|
- !ruby/object:Gem::Version
|
138
192
|
version: 1.0.1
|
139
193
|
- !ruby/object:Gem::Dependency
|
140
194
|
name: rspec
|
141
195
|
requirement: !ruby/object:Gem::Requirement
|
142
196
|
requirements:
|
143
|
-
- -
|
197
|
+
- - ~>
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '2.14'
|
200
|
+
- - ! '>='
|
144
201
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
202
|
+
version: 2.14.1
|
146
203
|
type: :development
|
147
204
|
prerelease: false
|
148
205
|
version_requirements: !ruby/object:Gem::Requirement
|
149
206
|
requirements:
|
150
|
-
- -
|
207
|
+
- - ~>
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '2.14'
|
210
|
+
- - ! '>='
|
151
211
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
212
|
+
version: 2.14.1
|
153
213
|
- !ruby/object:Gem::Dependency
|
154
214
|
name: vcr
|
155
215
|
requirement: !ruby/object:Gem::Requirement
|
156
216
|
requirements:
|
157
|
-
- -
|
217
|
+
- - ~>
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '2.5'
|
220
|
+
- - ! '>='
|
158
221
|
- !ruby/object:Gem::Version
|
159
222
|
version: 2.5.0
|
160
223
|
type: :development
|
161
224
|
prerelease: false
|
162
225
|
version_requirements: !ruby/object:Gem::Requirement
|
163
226
|
requirements:
|
164
|
-
- -
|
227
|
+
- - ~>
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '2.5'
|
230
|
+
- - ! '>='
|
165
231
|
- !ruby/object:Gem::Version
|
166
232
|
version: 2.5.0
|
167
233
|
- !ruby/object:Gem::Dependency
|
168
234
|
name: webmock
|
169
235
|
requirement: !ruby/object:Gem::Requirement
|
170
236
|
requirements:
|
171
|
-
- -
|
237
|
+
- - ! '>='
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: 1.8.0
|
240
|
+
- - <
|
172
241
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
242
|
+
version: '1.12'
|
174
243
|
type: :development
|
175
244
|
prerelease: false
|
176
245
|
version_requirements: !ruby/object:Gem::Requirement
|
177
246
|
requirements:
|
178
|
-
- -
|
247
|
+
- - ! '>='
|
179
248
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
249
|
+
version: 1.8.0
|
250
|
+
- - <
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: '1.12'
|
181
253
|
- !ruby/object:Gem::Dependency
|
182
254
|
name: flexmock
|
183
255
|
requirement: !ruby/object:Gem::Requirement
|
184
256
|
requirements:
|
185
|
-
- -
|
257
|
+
- - ~>
|
258
|
+
- !ruby/object:Gem::Version
|
259
|
+
version: '1.3'
|
260
|
+
- - ! '>='
|
186
261
|
- !ruby/object:Gem::Version
|
187
262
|
version: 1.3.2
|
188
263
|
type: :development
|
189
264
|
prerelease: false
|
190
265
|
version_requirements: !ruby/object:Gem::Requirement
|
191
266
|
requirements:
|
192
|
-
- -
|
267
|
+
- - ~>
|
268
|
+
- !ruby/object:Gem::Version
|
269
|
+
version: '1.3'
|
270
|
+
- - ! '>='
|
193
271
|
- !ruby/object:Gem::Version
|
194
272
|
version: 1.3.2
|
195
|
-
description: "\n An easy to use distributed web-crawler framework based on Redis\n
|
273
|
+
description: ! "\n An easy to use distributed web-crawler framework based on Redis\n
|
196
274
|
\ "
|
197
275
|
email:
|
198
276
|
- francesco.laurita@gmail.com
|
@@ -200,9 +278,9 @@ executables: []
|
|
200
278
|
extensions: []
|
201
279
|
extra_rdoc_files: []
|
202
280
|
files:
|
203
|
-
-
|
204
|
-
-
|
205
|
-
-
|
281
|
+
- .document
|
282
|
+
- .gitignore
|
283
|
+
- .rspec
|
206
284
|
- Gemfile
|
207
285
|
- LICENSE.txt
|
208
286
|
- README.md
|
@@ -254,7 +332,8 @@ files:
|
|
254
332
|
- spec/storage_s3_spec.rb
|
255
333
|
- spec/url_tracker_spec.rb
|
256
334
|
homepage: https://github.com/taganaka/polipus
|
257
|
-
licenses:
|
335
|
+
licenses:
|
336
|
+
- MIT
|
258
337
|
metadata: {}
|
259
338
|
post_install_message:
|
260
339
|
rdoc_options: []
|
@@ -262,17 +341,17 @@ require_paths:
|
|
262
341
|
- lib
|
263
342
|
required_ruby_version: !ruby/object:Gem::Requirement
|
264
343
|
requirements:
|
265
|
-
- -
|
344
|
+
- - ! '>='
|
266
345
|
- !ruby/object:Gem::Version
|
267
346
|
version: '0'
|
268
347
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
348
|
requirements:
|
270
|
-
- -
|
349
|
+
- - ! '>='
|
271
350
|
- !ruby/object:Gem::Version
|
272
351
|
version: '0'
|
273
352
|
requirements: []
|
274
353
|
rubyforge_project: polipus
|
275
|
-
rubygems_version: 2.2.
|
354
|
+
rubygems_version: 2.2.2
|
276
355
|
signing_key:
|
277
356
|
specification_version: 4
|
278
357
|
summary: Polipus distributed web-crawler framework
|