Yet Another 実行中のmikutterにコードを流し込むやつを作ったよ
何これ?
明けましておめでとうございます。
これは「あー正月ってテレビもつまんないしマジすることないよねー」カレンダー (なにそれ?)1日目の記事です。(1年ぶり2記事目)
今回は「起動中のmikutterに外部から任意のコードを流し込むプラグイン&コマンド」を作ったのでその紹介をば。
これ、コンセプトは@toshi_aさんのmikutter-modeと同じで、プラグインを改造するたびにmikutterをいちいち再起動したくないよねと言うところです。
じゃあなんで再発明してんだよ溜まってるIssue処理しろよ最近お前の腹の出方ヤバイだろ痩せろよ?のかと言うと、
インストール
GitHubからzipファイルをダウンロードして、プラグインディレクトリにmikutter-code-injectorと言うディレクトリ名で展開して下さい。
moguno/mikutter-code-injector · GitHub
※mikutterプラグインマネージャ"Packaged"で"moguno"を検索してインストールするのもおすすめです。
使い方
普通にmikutterを起動する。
ごく普通にmikutterを起動してください。
見た目には変化はありませんが、netstat -aするとこんな行が増えてたりします。
tcp6 0 0 localhost.39311 *.* LISTEN
コードを送り込む
~/.mikutter/plugin/mikutter-code-injector/にmktrと言うコマンドがあります。
そのmktrの標準入力にRubyコードを流し込んでみてください。
起動中のmikutterでコードが実行されます。
実行できるコードに制限はなく、mikutterのフル機能を操作できます。
仕組み的にはmikutterのトップレベルbindingをdrubyで公開しておいて、mktr側でそれを取得。
んで、取得したbindingのevalを呼ぶとmikutter側でコードが実行されると言う寸法です。
それでは試しに、コマンドラインからつぶやいてみましょう。
echo 'Service.primary.post(:message => "みくっ")' | ./mktr
ちゃんとつぶやけましたね。
速攻で複数人からふぁぼられてるのは弊TLの仕様です。