feedzirra 0.0.23 → 0.0.24
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.
- data/README.textile +12 -0
- data/lib/feedzirra.rb +4 -1
- data/spec/feedzirra/feed_spec.rb +2 -2
- metadata +84 -29
data/README.textile
CHANGED
@@ -32,19 +32,24 @@ gem install pauldix-feedzirra
|
|
32
32
|
<b>NOTE:</b>Some people have been reporting a few issues related to installation. First, the Ruby Forge version of curb is not what you want. It will not work. Nor will the curl-multi gem that lives on Ruby Forge. You have to get the "taf2-curb":http://github.com/taf2/curb/tree/master fork installed.
|
33
33
|
|
34
34
|
If you see this error when doing a require:
|
35
|
+
|
35
36
|
<pre>
|
36
37
|
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- curb_core (LoadError)
|
37
38
|
</pre>
|
39
|
+
|
38
40
|
It means that the taf2-curb gem didn't build correctly. To resolve this you can do a git clone git://github.com/taf2/curb.git then run rake gem in the curb directory, then sudo gem install pkg/curb-0.2.4.0.gem. After that you should be good.
|
39
41
|
|
40
42
|
If you see something like this when trying to run it:
|
43
|
+
|
41
44
|
<pre>
|
42
45
|
NoMethodError: undefined method `on_success' for #<Curl::Easy:0x1182724>
|
43
46
|
from ./lib/feedzirra/feed.rb:88:in `add_url_to_multi'
|
44
47
|
</pre>
|
48
|
+
|
45
49
|
This means that you are requiring curl-multi or the Ruby Forge version of Curb somewhere. You can't use those and need to get the taf2 version up and running.
|
46
50
|
|
47
51
|
If you're on Debian or Ubuntu and getting errors while trying to install the taf2-curb gem, it could be because you don't have the latest version of libcurl installed. Do this to fix:
|
52
|
+
|
48
53
|
<pre>
|
49
54
|
sudo apt-get install libcurl4-gnutls-dev
|
50
55
|
</pre>
|
@@ -56,6 +61,8 @@ If you're still having issues, please let me know on the mailing list. Also, "To
|
|
56
61
|
h2. Usage
|
57
62
|
|
58
63
|
"A gist of the following code":http://gist.github.com/57285
|
64
|
+
"A gist of how to do updates on feeds":http://gist.github.com/132671
|
65
|
+
|
59
66
|
<pre>
|
60
67
|
require 'feedzirra'
|
61
68
|
|
@@ -135,18 +142,23 @@ Feedzirra::Feed.fetch_and_parse(some_url, :http_authentication => ["myusername",
|
|
135
142
|
h2. Benchmarks
|
136
143
|
|
137
144
|
One of the goals of Feedzirra is speed. This includes not only parsing, but fetching multiple feeds as quickly as possible. I ran a benchmark getting 20 feeds 10 times using Feedzirra, rFeedParser, and FeedNormalizer. For more details the "benchmark code can be found in the project in spec/benchmarks/feedzirra_benchmarks.rb":http://github.com/pauldix/feedzirra/blob/7fb5634c5c16e9c6ec971767b462c6518cd55f5d/spec/benchmarks/feedzirra_benchmarks.rb
|
145
|
+
|
138
146
|
<pre>
|
139
147
|
feedzirra 5.170000 1.290000 6.460000 ( 18.917796)
|
140
148
|
rfeedparser 104.260000 12.220000 116.480000 (244.799063)
|
141
149
|
feed-normalizer 66.250000 4.010000 70.260000 (191.589862)
|
142
150
|
</pre>
|
151
|
+
|
143
152
|
The result of that benchmark is a bit sketchy because of the network variability. Running 10 times against the same 20 feeds was meant to smooth some of that out. However, there is also a "benchmark comparing parsing speed in spec/benchmarks/parsing_benchmark.rb":http://github.com/pauldix/feedzirra/blob/7fb5634c5c16e9c6ec971767b462c6518cd55f5d/spec/benchmarks/parsing_benchmark.rb on an atom feed.
|
153
|
+
|
144
154
|
<pre>
|
145
155
|
feedzirra 0.500000 0.030000 0.530000 ( 0.658744)
|
146
156
|
rfeedparser 8.400000 1.110000 9.510000 ( 11.839827)
|
147
157
|
feed-normalizer 5.980000 0.160000 6.140000 ( 7.576140)
|
148
158
|
</pre>
|
159
|
+
|
149
160
|
There's also a "benchmark that shows the results of using Feedzirra to perform updates on feeds":http://github.com/pauldix/feedzirra/blob/45d64319544c61a4c9eb9f7f825c73b9f9030cb3/spec/benchmarks/updating_benchmarks.rb you've already pulled in. I tested against 179 feeds. The first is the initial pull and the second is an update 65 seconds later. I'm not sure how many of them support etag and last-modified, so performance may be better or worse depending on what feeds you're requesting.
|
161
|
+
|
150
162
|
<pre>
|
151
163
|
feedzirra fetch and parse 4.010000 0.710000 4.720000 ( 15.110101)
|
152
164
|
feedzirra update 0.660000 0.280000 0.940000 ( 5.152709)
|
data/lib/feedzirra.rb
CHANGED
@@ -8,7 +8,10 @@ require 'uri'
|
|
8
8
|
|
9
9
|
require 'active_support/version'
|
10
10
|
require 'active_support/basic_object'
|
11
|
+
require 'active_support/core_ext/module'
|
12
|
+
require 'active_support/core_ext/kernel'
|
11
13
|
require 'active_support/core_ext/object'
|
14
|
+
|
12
15
|
if ActiveSupport::VERSION::MAJOR >= 3
|
13
16
|
require 'active_support/time'
|
14
17
|
else
|
@@ -34,5 +37,5 @@ require 'feedzirra/parser/atom'
|
|
34
37
|
require 'feedzirra/parser/atom_feed_burner'
|
35
38
|
|
36
39
|
module Feedzirra
|
37
|
-
VERSION = "0.0.
|
40
|
+
VERSION = "0.0.24"
|
38
41
|
end
|
data/spec/feedzirra/feed_spec.rb
CHANGED
@@ -235,7 +235,7 @@ describe Feedzirra::Feed do
|
|
235
235
|
|
236
236
|
describe "#add_url_to_multi" do
|
237
237
|
before(:each) do
|
238
|
-
@multi = Curl::Multi.new
|
238
|
+
@multi = Curl::Multi.new
|
239
239
|
@multi.stub!(:add)
|
240
240
|
@easy_curl = Curl::Easy.new(@paul_feed[:url])
|
241
241
|
|
@@ -377,7 +377,7 @@ describe Feedzirra::Feed do
|
|
377
377
|
|
378
378
|
describe "#add_feed_to_multi" do
|
379
379
|
before(:each) do
|
380
|
-
@multi = Curl::Multi.new
|
380
|
+
@multi = Curl::Multi.new
|
381
381
|
@multi.stub!(:add)
|
382
382
|
@easy_curl = Curl::Easy.new(@paul_feed[:url])
|
383
383
|
@feed = Feedzirra::Feed.parse(sample_feedburner_atom_feed)
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feedzirra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 24
|
9
|
+
version: 0.0.24
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Paul Dix
|
@@ -14,64 +19,112 @@ default_executable:
|
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: nokogiri
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">"
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
- 0
|
30
|
+
- 0
|
23
31
|
version: 0.0.0
|
24
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: sax-machine
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
- 0
|
44
|
+
- 12
|
33
45
|
version: 0.0.12
|
34
|
-
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
49
|
name: curb
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
52
|
requirements:
|
41
53
|
- - ">="
|
42
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
- 2
|
58
|
+
- 3
|
43
59
|
version: 0.2.3
|
44
|
-
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
45
62
|
- !ruby/object:Gem::Dependency
|
46
63
|
name: builder
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
66
|
requirements:
|
51
67
|
- - ">="
|
52
68
|
- !ruby/object:Gem::Version
|
69
|
+
segments:
|
70
|
+
- 2
|
71
|
+
- 1
|
72
|
+
- 2
|
53
73
|
version: 2.1.2
|
54
|
-
|
74
|
+
type: :runtime
|
75
|
+
version_requirements: *id004
|
55
76
|
- !ruby/object:Gem::Dependency
|
56
77
|
name: activesupport
|
57
|
-
|
58
|
-
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
60
80
|
requirements:
|
61
81
|
- - ">="
|
62
82
|
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
|
83
|
+
segments:
|
84
|
+
- 2
|
85
|
+
- 3
|
86
|
+
- 8
|
87
|
+
version: 2.3.8
|
88
|
+
type: :runtime
|
89
|
+
version_requirements: *id005
|
65
90
|
- !ruby/object:Gem::Dependency
|
66
91
|
name: loofah
|
67
|
-
|
68
|
-
|
69
|
-
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
70
94
|
requirements:
|
71
95
|
- - ">="
|
72
96
|
- !ruby/object:Gem::Version
|
97
|
+
segments:
|
98
|
+
- 0
|
99
|
+
- 3
|
100
|
+
- 1
|
73
101
|
version: 0.3.1
|
74
|
-
|
102
|
+
type: :runtime
|
103
|
+
version_requirements: *id006
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: rspec
|
106
|
+
prerelease: false
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
type: :development
|
115
|
+
version_requirements: *id007
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
name: diff-lcs
|
118
|
+
prerelease: false
|
119
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
segments:
|
124
|
+
- 0
|
125
|
+
version: "0"
|
126
|
+
type: :development
|
127
|
+
version_requirements: *id008
|
75
128
|
description:
|
76
129
|
email: paul@pauldix.net
|
77
130
|
executables: []
|
@@ -125,18 +178,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
178
|
requirements:
|
126
179
|
- - ">="
|
127
180
|
- !ruby/object:Gem::Version
|
181
|
+
segments:
|
182
|
+
- 0
|
128
183
|
version: "0"
|
129
|
-
version:
|
130
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
185
|
requirements:
|
132
186
|
- - ">="
|
133
187
|
- !ruby/object:Gem::Version
|
188
|
+
segments:
|
189
|
+
- 0
|
134
190
|
version: "0"
|
135
|
-
version:
|
136
191
|
requirements: []
|
137
192
|
|
138
193
|
rubyforge_project:
|
139
|
-
rubygems_version: 1.3.
|
194
|
+
rubygems_version: 1.3.6
|
140
195
|
signing_key:
|
141
196
|
specification_version: 2
|
142
197
|
summary: "A feed fetching and parsing library that treats the internet like Godzilla treats Japan: it dominates and eats all."
|