mikutterデーモンモードプラグイン作成チュートリアル
mikutterを最小構成のデーモンモードで動かしていろいろやるプラグインを作成する方法です. まず,デーモンとして動作させるmikutterに導入するプラグインを設置するディレクトリを 作成し,プラグインを書きます.
% mkdir -p ~/.mikutterd/plugin/daemon_sample % vi ~/.mikutterd/plugin/daemon_sample/daemon_sample.rb
今回デーモンモードのテストに用いるコードは以下の通りです.
1 #-*- coding: utf-8 -*-
2
3 require 'fileutils'
4 require 'logger'
5
6 Plugin.create(:daemon_sample) do
7 DAEMON_LOGDIR = File.join(CHIConfig::LOGDIR, 'daemon_sample')
8 DAEMON_LOGFILE = File.join(DAEMON_LOGDIR, 'daemon_sample.log')
9
10 def request_token()
11 twitter = MikuTwitter.new
12 twitter.consumer_key = Environment::TWITTER_CONSUMER_KEY
13 twitter.consumer_secret = Environment::TWITTER_CONSUMER_SECRET
14 req = twitter.request_oauth_token
15 puts req.authorize_url
16 print "code: "
17 code = STDIN.gets.chomp
18 access_token = req.get_access_token(oauth_token: req.token,
19 oauth_verifier: code)
20 Service.add_service(access_token.token, access_token.secret)
21 end
22
23 # ユーザのアクセストークンがServiceに登録されていない場合,認証を行う.
24 request_token if Service.services.empty?
25
26 # ロガーを設定する.
27 FileUtils.mkpath(DAEMON_LOGDIR) unless File.exist?(DAEMON_LOGDIR)
28 log = Logger.new(DAEMON_LOGFILE)
29 log.info('DAEMON_START')
30
31 # onupdateイベントにて流れてくるidnameとmessageをとにかくログに出力する.
32 onupdate {|svc, msgs|
33 msgs.each{|msg|
34 log.info(sprintf("[%s:%s] %s", svc.idname,
35 msg.user[:idname], msg[:message].gsub("\n", ' ')))
36 }
37 }
38 end
まずは,--daemonオプションを付けずに実行し,twitterアカウントの認証を行います.
% mikutter --confroot=~/.mikutterd --plugin=streaming,daemon_sample https://twitter.com/oauth/authorize?oauth_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx code: xxxxxxx
ログインに成功した場合,しばらく放置していると, ~/.mikutterd/log/daemon_sample/daemon_sample.log に以下のようにログが出力されている筈です.
% tail -f ~/.mikutterd/log/daemon_sample/daemon_sample.log # Logfile created on 2014-12-29 02:07:41 +0900 by logger.rb/44203 I, [2014-12-29T02:07:41.808676 #31851] INFO -- : START_DAEMON I, [2014-12-29T02:07:54.306211 #31851] INFO -- : [Phonomer:Phenomer] ひぁ I, [2014-12-29T02:08:20.102509 #31851] INFO -- : [Phonomer:toshi_a] みく
ログが出力されていることが確認できたら,--daemonオプションを付けて daemonとして動かしてみましょう.
% mikutter --confroot=~/.mikutterd --plugin=streaming,daemon_sample --daemon
問題なく動いているようであれば,プラグインに機能を追加していきましょう.
jrubyでmikutterデーモンモード
mikutterのデーモンモードでは,gtk2等の外部ライブラリが不要となるため, jrubyでも動くらしいとの噂があります. jrubyに--2.0オプションを付けて,2.0として起動してください.
% /opt/jruby/bin/jruby --2.0 --version jruby 1.7.18 (2.0.0p598) 2014-12-22 625381c on OpenJDK 64-Bit Server VM 1.7.0_71-b14 +jit [linux-amd64] % /opt/jruby/bin/jruby --2.0 /opt/mikutter/mikutter.rb --confroot=~/.mikutterd --plugin=streaming,daemon_sample --daemon