dash-bees 0.22 → 0.23

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 2010-09-23 v0.23 Feed auto-discovery.
2
+
3
+ Feed source now accepts HTML page and attempts auto-discovery, can work with
4
+ redirect.
5
+
1
6
  2010-09-23 v0.22 Icons, origins and bug fixes.
2
7
 
3
8
  API change: using special field names (DashFu::Bee::Fields).
data/lib/dash-fu/bee.rb CHANGED
@@ -133,11 +133,7 @@ module DashFu
133
133
  # new session and yields to the block. The block can them make HTTP requests
134
134
  # on the remote host. The block may be called asynchronously.
135
135
  def session(host, port = 80)
136
- http = Net::HTTP.new(host, port)
137
- http.use_ssl = true if port == 443
138
- http.start do |http|
139
- yield DashFu::HTTPSession.new(http)
140
- end
136
+ yield DashFu::HTTPSession.new(host, port)
141
137
  end
142
138
 
143
139
  protected
@@ -4,15 +4,20 @@ require "net/http"
4
4
  module DashFu
5
5
  # HTTP Session.
6
6
  class HTTPSession
7
- def initialize(http) #:nodoc:
8
- @http = http
7
+ def initialize(host, port)
8
+ @http = Net::HTTP.new(host, port)
9
+ @http.use_ssl = true if port == 443
10
+ @http.start
9
11
  end
10
12
 
11
13
  # Make a GET request and yield response to the block. Response consists of
12
14
  # three arguments: status code, response body and response headers. The
13
15
  # block may be called asynchronoulsy.
14
16
  def get(path, headers = {}, &block)
15
- response = @http.request(get_request(path, headers || {}))
17
+ headers ||= {}
18
+ request = Net::HTTP::Get.new(path)
19
+ request.basic_auth headers[:username], headers[:password] if headers[:username] && headers[:password]
20
+ response = @http.request(request)
16
21
  yield response.code.to_i, response.body, {}
17
22
  end
18
23
 
@@ -20,25 +25,19 @@ module DashFu
20
25
  # status is 200 the second argument is the response JSON object. The block
21
26
  # may be called asynchronously.
22
27
  def get_json(path, headers = {}, &block)
23
- response = @http.request(get_request(path, headers || {}))
24
- if Net::HTTPOK === response
25
- json = JSON.parse(response.body) rescue nil
26
- if json
27
- yield response.code.to_i, json, {}
28
+ get path, headers do |status, body, headers|
29
+ if status == 200
30
+ json = JSON.parse(body) rescue nil
31
+ if json
32
+ yield status, json, headers
33
+ else
34
+ yield 500, "Not a JSON document", headers
35
+ end
28
36
  else
29
- yield 500, "Not a JSON document", {}
37
+ yield status, body, headers
30
38
  end
31
- else
32
- yield response.code.to_i, response.message, {}
33
39
  end
34
40
  end
35
41
 
36
- protected
37
-
38
- def get_request(path, headers)
39
- request = Net::HTTP::Get.new(path)
40
- request.basic_auth headers[:username], headers[:password] if headers[:username] && headers[:password]
41
- request
42
- end
43
42
  end
44
43
  end
@@ -1,5 +1,5 @@
1
1
  module DashFu
2
2
  module Bee
3
- VERSION = "0.22"
3
+ VERSION = "0.23"
4
4
  end
5
5
  end
@@ -3,31 +3,53 @@ module DashFu::Bee
3
3
  class Feed
4
4
  include DashFu::Bee
5
5
 
6
+ ICON_URL = "http://dash-fu.com/images/sources/feed.png"
7
+
6
8
  def setup(source, params)
7
9
  unfeed = params["url"].strip.gsub(/^feed:\/\//i, "http://").gsub(/^feed:/i, "")
8
10
  uri = URI.parse(unfeed).normalize
9
11
  uri = URI.parse("http://#{uri}").normalize if uri.scheme.nil?
10
12
  source["url"] = uri.to_s
11
13
  return unless valid_uri?(uri)
12
-
14
+
15
+ feed = nil
13
16
  begin
14
17
  uri.open read_timeout: 3, redirect: true do |io|
15
18
  code = io.status.first
16
- raise "Cannot read this feed, got status code #{code}" unless code == "200"
17
- feed = (Nokogiri::XML(io.read)>"feed").first
18
- title = get_text(feed>"title").strip
19
- title = uri.to_s if title.blank?
20
-
21
- source[SOURCE_NAME] = title
22
- alt = (feed>"link[rel=alternate]").first
23
- permalink = alt ? alt["href"].strip : uri.to_s
24
- source[ORIGIN] = { text: title, url: permalink }
25
- source[ICON] = (feed>"icon").text
19
+ if code == "200"
20
+ body = io.read
21
+ if feed = (Nokogiri::XML(body)>"feed").first
22
+ # Capture real URL (after redirect).
23
+ source["url"] = io.base_uri.to_s
24
+ elsif link = (Nokogiri::HTML(body)>"html>head>link[rel~=\"alternate\"][type=\"application/atom+xml\"]").first
25
+ # Try auto-discovery.
26
+ uri = URI.parse(link["href"])
27
+ if valid_uri?(uri)
28
+ uri.open read_timeout: 3, redirect: true do |io|
29
+ code = io.status.first
30
+ if code == "200"
31
+ feed = (Nokogiri::XML(io.read)>"feed").first
32
+ source["url"] = io.base_uri.to_s
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
26
38
  end
27
39
  rescue
28
- puts $!
29
40
  raise "Cannot read this feed: is it down for you or just for us?"
30
41
  end
42
+
43
+ raise "Cannot read this feed: are you sure this is the URL of a Web feed?" unless feed
44
+ title = get_text(feed>"title").strip
45
+ title = uri.to_s if title.blank?
46
+
47
+ source[SOURCE_NAME] = title
48
+ alt = (feed>"link[rel=alternate]").first
49
+ permalink = alt ? alt["href"].strip : uri.to_s
50
+ source[ORIGIN] = { text: title, url: permalink }
51
+ source[ICON] = (feed>"icon").text
52
+ source[ICON] = ICON_URL if source[ICON].blank?
31
53
  end
32
54
 
33
55
  def validate(source)
@@ -4,4 +4,6 @@ en:
4
4
  <label>Feed URL <input type="text" name="source[url]" size="70"></label>
5
5
  notes: |-
6
6
  <ul>
7
+ <li>Enter the feed URL, you can try the page URL instead and we'll do our best to auto-discover the feed URL.</li>
8
+ <li>We only support Atom feeds for now (sorry RSS!)</li>
7
9
  </ul>
data/test/feed_test.rb CHANGED
@@ -27,6 +27,12 @@ describe "Feed" do
27
27
  assert_equal "http://www.flickr.com/photos/nerduo/3770972018/", source.fields[ICON]
28
28
  end
29
29
 
30
+ it "should default to feed icon" do
31
+ stub_request(:get, "http://example.org/noicon.xml").to_return body: { title: "" }.to_xml(root: "feed")
32
+ source.setup "url"=>"http://example.org/noicon.xml"
33
+ assert_equal "http://dash-fu.com/images/sources/feed.png", source.fields[ICON]
34
+ end
35
+
30
36
  it "should accept feed URL (short form)" do
31
37
  source.setup "url"=>"feed://example.org/feed.xml"
32
38
  assert_equal "dive into mark", source.name
@@ -36,6 +42,22 @@ describe "Feed" do
36
42
  source.setup "url"=>"feed:http://example.org/feed.xml"
37
43
  assert_equal "dive into mark", source.name
38
44
  end
45
+
46
+ it "should handle redirect" do
47
+ stub_request(:get, "http://example.org/redirect").to_return status: 302, headers: { "Location"=>"http://example.org/feed.xml" }
48
+ source.setup "url"=>"http://example.org/redirect"
49
+ assert_equal "dive into mark", source.name
50
+ end
51
+
52
+ it "should get feed URL from auto-discovery" do
53
+ stub_request(:get, "http://example.org/html").to_return body: <<-HTML
54
+ <head>
55
+ <link rel="alternate feed" type="application/atom+xml" href="http://example.org/feed.xml">
56
+ </head>
57
+ HTML
58
+ source.setup "url"=>"http://example.org/html"
59
+ assert_equal "dive into mark", source.name
60
+ end
39
61
  end
40
62
 
41
63
 
@@ -17,7 +17,7 @@ class Person
17
17
  def validate
18
18
  if photo_url
19
19
  uri = URI.parse(photo_url)
20
- fail "Photo URL must be absolute HTTP URL" unless uri.scheme == "http" && uri.absolute?
20
+ fail "Photo URL must be absolute and HTTP" unless uri.absolute? && uri.scheme == "http"
21
21
  end
22
22
  fail "Identities must be of the form name:value" unless identities.nil? || identities.all? { |id| id =~ /^[\w\.]+:.+$/ }
23
23
  end
data/test/test.log CHANGED
@@ -2259,3 +2259,222 @@ Loaded Bee github: DashFu::Bee::Github
2259
2259
  Loaded Bee github_issues: DashFu::Bee::GithubIssues
2260
2260
  Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2261
2261
  #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2262
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2263
+ Loaded Bee feed: DashFu::Bee::Feed
2264
+ Loaded Bee github: DashFu::Bee::Github
2265
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2266
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2267
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2268
+ Loaded Bee feed: DashFu::Bee::Feed
2269
+ Loaded Bee github: DashFu::Bee::Github
2270
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2271
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2272
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2273
+ Loaded Bee feed: DashFu::Bee::Feed
2274
+ Loaded Bee github: DashFu::Bee::Github
2275
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2276
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2277
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2278
+ Loaded Bee feed: DashFu::Bee::Feed
2279
+ Loaded Bee github: DashFu::Bee::Github
2280
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2281
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2282
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2283
+ Loaded Bee feed: DashFu::Bee::Feed
2284
+ Loaded Bee github: DashFu::Bee::Github
2285
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2286
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2287
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2288
+ Loaded Bee feed: DashFu::Bee::Feed
2289
+ Loaded Bee github: DashFu::Bee::Github
2290
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2291
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2292
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2293
+ Loaded Bee feed: DashFu::Bee::Feed
2294
+ Loaded Bee github: DashFu::Bee::Github
2295
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2296
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2297
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2298
+ Loaded Bee feed: DashFu::Bee::Feed
2299
+ Loaded Bee github: DashFu::Bee::Github
2300
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2301
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2302
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2303
+ Loaded Bee feed: DashFu::Bee::Feed
2304
+ Loaded Bee github: DashFu::Bee::Github
2305
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2306
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2307
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2308
+ Loaded Bee feed: DashFu::Bee::Feed
2309
+ Loaded Bee github: DashFu::Bee::Github
2310
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2311
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2312
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2313
+ Loaded Bee feed: DashFu::Bee::Feed
2314
+ Loaded Bee github: DashFu::Bee::Github
2315
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2316
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2317
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2318
+ Loaded Bee feed: DashFu::Bee::Feed
2319
+ Loaded Bee github: DashFu::Bee::Github
2320
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2321
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2322
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2323
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2324
+ Loaded Bee feed: DashFu::Bee::Feed
2325
+ Loaded Bee github: DashFu::Bee::Github
2326
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2327
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2328
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2329
+ Loaded Bee feed: DashFu::Bee::Feed
2330
+ Loaded Bee github: DashFu::Bee::Github
2331
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2332
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2333
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2334
+ Loaded Bee feed: DashFu::Bee::Feed
2335
+ Loaded Bee github: DashFu::Bee::Github
2336
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2337
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2338
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2339
+ Loaded Bee feed: DashFu::Bee::Feed
2340
+ Loaded Bee github: DashFu::Bee::Github
2341
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2342
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2343
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2344
+ Loaded Bee feed: DashFu::Bee::Feed
2345
+ Loaded Bee github: DashFu::Bee::Github
2346
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2347
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2348
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2349
+ Loaded Bee feed: DashFu::Bee::Feed
2350
+ Loaded Bee github: DashFu::Bee::Github
2351
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2352
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2353
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2354
+ Loaded Bee feed: DashFu::Bee::Feed
2355
+ Loaded Bee github: DashFu::Bee::Github
2356
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2357
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2358
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2359
+ Loaded Bee feed: DashFu::Bee::Feed
2360
+ Loaded Bee github: DashFu::Bee::Github
2361
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2362
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2363
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2364
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2365
+ Loaded Bee feed: DashFu::Bee::Feed
2366
+ Loaded Bee github: DashFu::Bee::Github
2367
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2368
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2369
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2370
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2371
+ Loaded Bee feed: DashFu::Bee::Feed
2372
+ Loaded Bee github: DashFu::Bee::Github
2373
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2374
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2375
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2376
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2377
+ Loaded Bee feed: DashFu::Bee::Feed
2378
+ Loaded Bee github: DashFu::Bee::Github
2379
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2380
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2381
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2382
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2383
+ Loaded Bee feed: DashFu::Bee::Feed
2384
+ Loaded Bee github: DashFu::Bee::Github
2385
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2386
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2387
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2388
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2389
+ Loaded Bee feed: DashFu::Bee::Feed
2390
+ Loaded Bee github: DashFu::Bee::Github
2391
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2392
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2393
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2394
+ Loaded Bee feed: DashFu::Bee::Feed
2395
+ Loaded Bee github: DashFu::Bee::Github
2396
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2397
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2398
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2399
+ Loaded Bee feed: DashFu::Bee::Feed
2400
+ Loaded Bee github: DashFu::Bee::Github
2401
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2402
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2403
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2404
+ Loaded Bee feed: DashFu::Bee::Feed
2405
+ Loaded Bee github: DashFu::Bee::Github
2406
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2407
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2408
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2409
+ Loaded Bee feed: DashFu::Bee::Feed
2410
+ Loaded Bee github: DashFu::Bee::Github
2411
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2412
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2413
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2414
+ Loaded Bee feed: DashFu::Bee::Feed
2415
+ Loaded Bee github: DashFu::Bee::Github
2416
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2417
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2418
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2419
+ Loaded Bee feed: DashFu::Bee::Feed
2420
+ Loaded Bee github: DashFu::Bee::Github
2421
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2422
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2423
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2424
+ Loaded Bee feed: DashFu::Bee::Feed
2425
+ Loaded Bee github: DashFu::Bee::Github
2426
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2427
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2428
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2429
+ Loaded Bee feed: DashFu::Bee::Feed
2430
+ Loaded Bee github: DashFu::Bee::Github
2431
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2432
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2433
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2434
+ Loaded Bee feed: DashFu::Bee::Feed
2435
+ Loaded Bee github: DashFu::Bee::Github
2436
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2437
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2438
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2439
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2440
+ Loaded Bee feed: DashFu::Bee::Feed
2441
+ Loaded Bee github: DashFu::Bee::Github
2442
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2443
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2444
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2445
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2446
+ Loaded Bee feed: DashFu::Bee::Feed
2447
+ Loaded Bee github: DashFu::Bee::Github
2448
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2449
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2450
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2451
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2452
+ Loaded Bee feed: DashFu::Bee::Feed
2453
+ Loaded Bee github: DashFu::Bee::Github
2454
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2455
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2456
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2457
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2458
+ Loaded Bee feed: DashFu::Bee::Feed
2459
+ Loaded Bee github: DashFu::Bee::Github
2460
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2461
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2462
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2463
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2464
+ Loaded Bee feed: DashFu::Bee::Feed
2465
+ Loaded Bee github: DashFu::Bee::Github
2466
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2467
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2468
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2469
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2470
+ Loaded Bee feed: DashFu::Bee::Feed
2471
+ Loaded Bee github: DashFu::Bee::Github
2472
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2473
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2474
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
2475
+ Loaded Bee backtweets: DashFu::Bee::Backtweets
2476
+ Loaded Bee feed: DashFu::Bee::Feed
2477
+ Loaded Bee github: DashFu::Bee::Github
2478
+ Loaded Bee github_issues: DashFu::Bee::GithubIssues
2479
+ Loaded Bee ruby_gems: DashFu::Bee::RubyGems
2480
+ #<NoMethodError: undefined method `namespaces' for nil:NilClass>
metadata CHANGED
@@ -4,8 +4,8 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 22
8
- version: "0.22"
7
+ - 23
8
+ version: "0.23"
9
9
  platform: ruby
10
10
  authors:
11
11
  - Assaf Arkin
@@ -149,7 +149,7 @@ licenses: []
149
149
  post_install_message:
150
150
  rdoc_options:
151
151
  - --title
152
- - DashFu::Bee 0.22
152
+ - DashFu::Bee 0.23
153
153
  - --main
154
154
  - README.rdoc
155
155
  - --webcvs