dash-bees 0.22 → 0.23

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/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