AnyEvent::Twitter::StreamとKiokuDBを用いてツイートを処理しようと試みていますが、
以下のソースを実行すると
no open live object scope at /usr/local/share/perl/5.18.2/KiokuDB/Collapser/Buffer.pm line 229.
とエラーを吐いて、停止してしまいます。どのようにスコープを設定すれば良いのでしょうか。ご教授頂ければ幸いです。
lang
1#!/usr/bin/perl 2 3use strict; 4use warnings; 5 6use AnyEvent::Twitter::Stream; 7our $cv = AE::cv; 8 9use HTTP::Date; 10 11use KiokuDB; 12our $kdb = KiokuDB->connect( 13 "dbi:SQLite:dbname=test.db", 14 create => 1, 15); 16 17my ($consumer_key,$consumer_secret,$access_token,$access_token_secret)= @your_tokens; 18 19our @tweets; 20my $ats = AnyEvent::Twitter::Stream->new( 21 consumer_key => $consumer_key, 22 consumer_secret => $consumer_secret, 23 token => $access_token, 24 token_secret => $access_token_secret, 25 method => "userstream", 26 replies => "all", 27 on_tweet => sub{ 28 my $tweet = shift; 29 $kdb->new_scope; 30 31 if(!$tweet->{user} || !$tweet->{text} ){return;} 32 33 34 my $mt = Tweet->new( 35 id => $tweet->{id}, 36 text => $tweet->{text}, 37 ); 38 39 push(@tweets,$kdb->store( $mt )); 40 41 $kdb->scope_remove; 42 43 }, 44 on_error => sub{ 45 my $error = shift; 46 warn "ERROR: $error\n"; 47 my $done->send; 48 }, 49 on_eof => sub{ 50 my $done->send; 51 warn "EOF\n"; 52 }, 53); 54$cv->recv; 55 56{ 57 package Tweet; 58 use Moose; 59 60 has 'id' => ( 61 is => 'ro', 62 isa => 'Int', 63 required => 1, 64 ); 65 66 has 'text' => ( 67 is => 'ro', 68 isa => 'Str', 69 required => 1, 70 ); 71} 72
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/12/19 05:05