iudex-da 1.4.0-java → 1.5.0-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 78b67b192c7ddc6613cab0a4f4946d2d78c5d96c
4
+ data.tar.gz: 9b240415f16b58d8c264caf9a34a1b791208758b
5
+ SHA512:
6
+ metadata.gz: 2f49c63c044a60a37d589737998e743c742db233b02bf14ffa02f7a47ceeafa128000ea72a5759fafc3cff12d9425c5cb67c1669a17a28b34b177a833958c5c9
7
+ data.tar.gz: b4c7fe664325e13b5f5c9d77653aedd4930bedb0c800c095c00a08bcd5d2dec9f48af9b467bfe736a9173e7b67920e0c1e97f2add895e69882891a93800bc9b9
@@ -1,3 +1,19 @@
1
+ === 1.5.0 (2014-3-27)
2
+ Note: this release is at this time considered experimental or an "alpha"
3
+ by comparison to 1.4.0
4
+ * Upgrade to jdbc-postgres ~> 9.3.1100 (also tested 9.3.1101)
5
+ * Upgrade to sequel ~> 4.8.0
6
+ * Expand to >= 1.4.0, < 1.7 iudex-core dependency
7
+ * Add WorkPoller.isolation_level accessor
8
+ * Add WorkPoller.max_retries accessor
9
+ * Auto-compute WorkPoller max_urls from set domain_union
10
+ * Add exponential backoff delay option to ContentReader.handleError
11
+ retries, setter in WorkPoller
12
+ * Add explicit LOCK mode option to URLs table in ContentReader, setter
13
+ in WorkPoller
14
+ * Add null check to WorkPoller select_with_retry call (may occur when
15
+ retries exhausted).
16
+
1
17
  === 1.4.0 (2013-10-29)
2
18
  * Add experimental WorkPoller.do_reserve support, which utilizes
3
19
  PostgreSQL 9.1+ writable Common Table Expressions (CTEs) to
@@ -32,4 +32,4 @@ test/test_migrate.rb
32
32
  test/test_pool_factory.rb
33
33
  test/test_url_model.rb
34
34
  test/test_work_poller.rb
35
- lib/iudex-da/iudex-da-1.4.0.jar
35
+ lib/iudex-da/iudex-da-1.5.0.jar
@@ -16,7 +16,7 @@ meta-data store and work priority queue.
16
16
 
17
17
  == License
18
18
 
19
- Copyright (c) 2008-2013 David Kellum
19
+ Copyright (c) 2008-2014 David Kellum
20
20
 
21
21
  Licensed under the Apache License, Version 2.0 (the "License"); you
22
22
  may not use this file except in compliance with the License. You may
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env jruby
2
2
  # -*- ruby -*-
3
3
  #--
4
- # Copyright (c) 2008-2013 David Kellum
4
+ # Copyright (c) 2008-2014 David Kellum
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License"); you
7
7
  # may not use this file except in compliance with the License. You
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env jruby
2
2
  # -*- ruby -*-
3
3
  #--
4
- # Copyright (c) 2008-2013 David Kellum
4
+ # Copyright (c) 2008-2014 David Kellum
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License"); you
7
7
  # may not use this file except in compliance with the License. You
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env jruby
2
2
  # -*- ruby -*-
3
3
  #--
4
- # Copyright (c) 2008-2013 David Kellum
4
+ # Copyright (c) 2008-2014 David Kellum
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License"); you
7
7
  # may not use this file except in compliance with the License. You
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env jruby
2
2
  # -*- ruby -*-
3
3
  #--
4
- # Copyright (c) 2008-2013 David Kellum
4
+ # Copyright (c) 2008-2014 David Kellum
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License"); you
7
7
  # may not use this file except in compliance with the License. You
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env jruby
2
2
  # -*- ruby -*-
3
3
  #--
4
- # Copyright (c) 2008-2013 David Kellum
4
+ # Copyright (c) 2008-2014 David Kellum
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License"); you
7
7
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -16,7 +16,7 @@
16
16
 
17
17
  module Iudex
18
18
  module DA
19
- VERSION = '1.4.0'
19
+ VERSION = '1.5.0'
20
20
 
21
21
  LIB_DIR = File.dirname( __FILE__ ) # :nodoc:
22
22
  end
@@ -1,6 +1,6 @@
1
1
 
2
2
  #--
3
- # Copyright (c) 2008-2013 David Kellum
3
+ # Copyright (c) 2008-2014 David Kellum
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License"); you
6
6
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You may
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You may
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You may
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You may
@@ -58,7 +58,8 @@ module Iudex::DA
58
58
  alias :max_host_urls= :max_domain_urls=
59
59
 
60
60
  # The limit of urls to obtain in a single poll (across all
61
- # domains) (default: 50_000)
61
+ # domains). May be overridden by #domain_union=
62
+ # (default: 50_000)
62
63
  attr_accessor :max_urls
63
64
 
64
65
  # A secondary limit on the number of urls to consider, taking the
@@ -148,13 +149,13 @@ module Iudex::DA
148
149
  # unconfigured domains.
149
150
  #
150
151
  # :max:: The maximum number of visit urls to obtain in one poll
151
- # (instead of the top level #max_urls.) A zero max_urls
152
- # value excludes this domain/type (efficiently).
152
+ # (instead of the top level #max_urls.) A zero value
153
+ # efficiently excludes this domain/type.
153
154
  #
154
155
  # Also a [ domain, max ] alternative syntax is currently supported
155
156
  # but deprecated.
156
157
  #
157
- attr_accessor :domain_union
158
+ attr_reader :domain_union
158
159
 
159
160
  # An array containing a zero-based position and a total number of
160
161
  # evenly divided segments within the range of possible uhash
@@ -163,6 +164,25 @@ module Iudex::DA
163
164
  # being a hash on the entire URL. (default: nil, off)
164
165
  attr_accessor :uhash_slice
165
166
 
167
+ # Max-retries not including the initial try (Default: 10)
168
+ attr_accessor :max_retries
169
+
170
+ # The transaction isolation level to use for work polling
171
+ # See {java.sql.Connection constants}[http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.sql.Connection.TRANSACTION_READ_COMMITTED]
172
+ # (Default: TRANSACTION_REPEATABLE_READ (4))
173
+ attr_accessor :isolation_level
174
+
175
+ # URLS table explicit lock mode (String) for work polling,
176
+ # i.e. 'EXCLUSIVE'. Try this if deadlocks/contention are otherwise causing work
177
+ # poll starvation or excessive retries.
178
+ # (Default: nil -> implicit locking via isolation level only)
179
+ attr_accessor :lock_mode
180
+
181
+ # Maximum first-retry back-off delay in seconds (Float). Actual
182
+ # delay is a random value from 0..(value * 2^tries) for each
183
+ # retry. Default: 0.0 : no delay
184
+ attr_accessor :backoff
185
+
166
186
  def initialize( data_source, mapper )
167
187
  super()
168
188
 
@@ -178,6 +198,9 @@ module Iudex::DA
178
198
  @max_discard_ratio = 2.0/3.0
179
199
  @max_reserved_time_s = nil
180
200
  @last_none_reserved = Time.now
201
+ @max_retries = 10
202
+ @isolation_level = 4
203
+ @backoff = 0.0
181
204
 
182
205
  @age_coef_1 = 0.2
183
206
  @age_coef_2 = 0.1
@@ -205,7 +228,8 @@ module Iudex::DA
205
228
 
206
229
  # Override GenericWorkPollStrategy
207
230
  def pollWorkImpl( visit_queue )
208
- visit_queue.add_all( poll( visit_queue.order_count ) )
231
+ res = poll( visit_queue.order_count )
232
+ visit_queue.add_all( res ) if res
209
233
  rescue SQLException => x
210
234
  @log.error( "On poll: ", x )
211
235
  end
@@ -266,7 +290,10 @@ module Iudex::DA
266
290
  def reader
267
291
  @reader ||= ContentReader.new( @data_source, @mapper ).tap do |r|
268
292
  r.priority_adjusted = aged_priority?
269
- r.max_retries = 10
293
+ r.max_retries = max_retries
294
+ r.isolation_level = isolation_level
295
+ r.lock_mode = lock_mode if lock_mode
296
+ r.backoff = ( backoff * 1_000 ).round if backoff > 0.0
270
297
  end
271
298
  end
272
299
 
@@ -275,9 +302,12 @@ module Iudex::DA
275
302
  args = args.flatten.dup
276
303
  opts = args.last.is_a?( Hash ) ? args.pop.dup : {}
277
304
  opts[ :domain ] ||= args.shift
278
- opts[ :max ] ||= args.shift
305
+ opts[ :max ] ||= args.shift || @max_urls
279
306
  opts
280
307
  end
308
+ @max_urls = @domain_union.inject( 0 ) do |m,r|
309
+ m + r[:max]
310
+ end
281
311
  end
282
312
 
283
313
  def domain_union?
@@ -301,13 +331,8 @@ module Iudex::DA
301
331
  subqueries = []
302
332
  @domain_union.each do | opts |
303
333
  opts = opts.dup
304
- if opts[ :max ]
305
- opts[ :max ] = ( opts[ :max ] * ( max_urls - current_urls ) /
306
- max_urls.to_f ).floor
307
- else
308
- opts[ :max ] = ( max_urls - current_urls )
309
- end
310
-
334
+ opts[ :max ] = ( opts[ :max ] * ( max_urls - current_urls ) /
335
+ max_urls.to_f ).floor
311
336
  next if opts[ :max ] == 0
312
337
 
313
338
  c = criteria.dup
data/pom.xml CHANGED
@@ -5,7 +5,7 @@
5
5
  <groupId>iudex</groupId>
6
6
  <artifactId>iudex-da</artifactId>
7
7
  <packaging>jar</packaging>
8
- <version>1.4.0</version>
8
+ <version>1.5.0</version>
9
9
  <name>Iudex Data Access</name>
10
10
 
11
11
  <parent>
@@ -20,7 +20,7 @@
20
20
  <dependency>
21
21
  <groupId>iudex</groupId>
22
22
  <artifactId>iudex-core</artifactId>
23
- <version>[1.4.0,1.4.999)</version>
23
+ <version>[1.4.0,1.7)</version>
24
24
  </dependency>
25
25
 
26
26
  <dependency>
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2008-2013 David Kellum
2
+ # Copyright (c) 2008-2014 David Kellum
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License"); you
5
5
  # may not use this file except in compliance with the License. You
@@ -2,7 +2,7 @@
2
2
  #.hashdot.profile += jruby-shortlived
3
3
 
4
4
  #--
5
- # Copyright (c) 2008-2013 David Kellum
5
+ # Copyright (c) 2008-2014 David Kellum
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License"); you
8
8
  # may not use this file except in compliance with the License. You may
@@ -2,7 +2,7 @@
2
2
  #.hashdot.profile += jruby-shortlived
3
3
 
4
4
  #--
5
- # Copyright (c) 2008-2013 David Kellum
5
+ # Copyright (c) 2008-2014 David Kellum
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License"); you
8
8
  # may not use this file except in compliance with the License. You
@@ -2,7 +2,7 @@
2
2
  #.hashdot.profile += jruby-shortlived
3
3
 
4
4
  #--
5
- # Copyright (c) 2008-2013 David Kellum
5
+ # Copyright (c) 2008-2014 David Kellum
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License"); you
8
8
  # may not use this file except in compliance with the License. You may
@@ -2,7 +2,7 @@
2
2
  #.hashdot.profile += jruby-shortlived
3
3
 
4
4
  #--
5
- # Copyright (c) 2008-2013 David Kellum
5
+ # Copyright (c) 2008-2014 David Kellum
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License"); you
8
8
  # may not use this file except in compliance with the License. You may
metadata CHANGED
@@ -1,30 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iudex-da
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.4.0
4
+ version: 1.5.0
6
5
  platform: java
7
6
  authors:
8
7
  - David Kellum
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-30 00:00:00.000000000 Z
11
+ date: 2014-03-27 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: iudex-core
16
15
  version_requirements: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - ~>
17
+ - - '>='
19
18
  - !ruby/object:Gem::Version
20
19
  version: 1.4.0
21
- none: false
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '1.7'
22
23
  requirement: !ruby/object:Gem::Requirement
23
24
  requirements:
24
- - - ~>
25
+ - - '>='
25
26
  - !ruby/object:Gem::Version
26
27
  version: 1.4.0
27
- none: false
28
+ - - <
29
+ - !ruby/object:Gem::Version
30
+ version: '1.7'
28
31
  prerelease: false
29
32
  type: :runtime
30
33
  - !ruby/object:Gem::Dependency
@@ -33,14 +36,12 @@ dependencies:
33
36
  requirements:
34
37
  - - ~>
35
38
  - !ruby/object:Gem::Version
36
- version: '3.46'
37
- none: false
39
+ version: 4.8.0
38
40
  requirement: !ruby/object:Gem::Requirement
39
41
  requirements:
40
42
  - - ~>
41
43
  - !ruby/object:Gem::Version
42
- version: '3.46'
43
- none: false
44
+ version: 4.8.0
44
45
  prerelease: false
45
46
  type: :runtime
46
47
  - !ruby/object:Gem::Dependency
@@ -49,14 +50,12 @@ dependencies:
49
50
  requirements:
50
51
  - - ~>
51
52
  - !ruby/object:Gem::Version
52
- version: 9.2.1002
53
- none: false
53
+ version: 9.3.1100
54
54
  requirement: !ruby/object:Gem::Requirement
55
55
  requirements:
56
56
  - - ~>
57
57
  - !ruby/object:Gem::Version
58
- version: 9.2.1002
59
- none: false
58
+ version: 9.3.1100
60
59
  prerelease: false
61
60
  type: :runtime
62
61
  - !ruby/object:Gem::Dependency
@@ -66,13 +65,11 @@ dependencies:
66
65
  - - ~>
67
66
  - !ruby/object:Gem::Version
68
67
  version: 1.4.0
69
- none: false
70
68
  requirement: !ruby/object:Gem::Requirement
71
69
  requirements:
72
70
  - - ~>
73
71
  - !ruby/object:Gem::Version
74
72
  version: 1.4.0
75
- none: false
76
73
  prerelease: false
77
74
  type: :runtime
78
75
  - !ruby/object:Gem::Dependency
@@ -82,13 +79,11 @@ dependencies:
82
79
  - - ~>
83
80
  - !ruby/object:Gem::Version
84
81
  version: 1.5.0
85
- none: false
86
82
  requirement: !ruby/object:Gem::Requirement
87
83
  requirements:
88
84
  - - ~>
89
85
  - !ruby/object:Gem::Version
90
86
  version: 1.5.0
91
- none: false
92
87
  prerelease: false
93
88
  type: :runtime
94
89
  - !ruby/object:Gem::Dependency
@@ -98,13 +93,11 @@ dependencies:
98
93
  - - ~>
99
94
  - !ruby/object:Gem::Version
100
95
  version: 4.7.4
101
- none: false
102
96
  requirement: !ruby/object:Gem::Requirement
103
97
  requirements:
104
98
  - - ~>
105
99
  - !ruby/object:Gem::Version
106
100
  version: 4.7.4
107
- none: false
108
101
  prerelease: false
109
102
  type: :development
110
103
  - !ruby/object:Gem::Dependency
@@ -114,13 +107,11 @@ dependencies:
114
107
  - - ~>
115
108
  - !ruby/object:Gem::Version
116
109
  version: '1.5'
117
- none: false
118
110
  requirement: !ruby/object:Gem::Requirement
119
111
  requirements:
120
112
  - - ~>
121
113
  - !ruby/object:Gem::Version
122
114
  version: '1.5'
123
- none: false
124
115
  prerelease: false
125
116
  type: :development
126
117
  - !ruby/object:Gem::Dependency
@@ -129,14 +120,12 @@ dependencies:
129
120
  requirements:
130
121
  - - ~>
131
122
  - !ruby/object:Gem::Version
132
- version: '2.0'
133
- none: false
123
+ version: '2.1'
134
124
  requirement: !ruby/object:Gem::Requirement
135
125
  requirements:
136
126
  - - ~>
137
127
  - !ruby/object:Gem::Version
138
- version: '2.0'
139
- none: false
128
+ version: '2.1'
140
129
  prerelease: false
141
130
  type: :development
142
131
  description: Iudex is a general purpose web crawler and feed processor in ruby/java. The iudex-da gem provides a PostgreSQL-based content meta-data store and work priority queue.
@@ -187,9 +176,11 @@ files:
187
176
  - test/test_pool_factory.rb
188
177
  - test/test_url_model.rb
189
178
  - test/test_work_poller.rb
190
- - lib/iudex-da/iudex-da-1.4.0.jar
179
+ - lib/iudex-da/iudex-da-1.5.0.jar
191
180
  homepage: http://iudex.gravitext.com
192
- licenses: []
181
+ licenses:
182
+ - Apache-2.0
183
+ metadata: {}
193
184
  post_install_message:
194
185
  rdoc_options:
195
186
  - --main
@@ -198,27 +189,18 @@ require_paths:
198
189
  - lib
199
190
  required_ruby_version: !ruby/object:Gem::Requirement
200
191
  requirements:
201
- - - ! '>='
192
+ - - '>='
202
193
  - !ruby/object:Gem::Version
203
- version: '0'
204
- segments:
205
- - 0
206
- hash: 2
207
- none: false
194
+ version: 1.8.7
208
195
  required_rubygems_version: !ruby/object:Gem::Requirement
209
196
  requirements:
210
- - - ! '>='
197
+ - - '>='
211
198
  - !ruby/object:Gem::Version
212
199
  version: '0'
213
- segments:
214
- - 0
215
- hash: 2
216
- none: false
217
200
  requirements: []
218
201
  rubyforge_project:
219
- rubygems_version: 1.8.24
202
+ rubygems_version: 2.1.9
220
203
  signing_key:
221
- specification_version: 3
204
+ specification_version: 4
222
205
  summary: Iudex is a general purpose web crawler and feed processor in ruby/java.
223
206
  test_files: []
224
- ...