LinuxのcrontabやserviceからSkype APIが使えるようになった
https://github.com/shokai/skype-ruby


問題

Skype gemで使っているruby-dbusは環境変数DBUS_SESSION_BUS_ADDRESSを使ってSkypeアプリと通信させてくれるのだが、GUIから起動したTerminalでないとDBUS_SESSION_BUS_ADDRESSが設定されていない。
つまりcronやserviceから起動したプロセスはDBUSが使えなかった


解決方法

~/.dbus/session-bus/ にテキストファイルでDBUS_SESSION_BUS_ADDRESSが書いてあった

kde – Run a dbus program in crontab , how to know about the SESSION id? – Unix & Linux Stack Exchange

DBUSに接続する前に環境変数DBUS_SESSION_BUS_ADDRESSが無かったらファイルから読んで設定するようにした。


Virtual Box

Skype APIは起動済みのSkypeアプリと通信するものなので、Skype botを作るにはSkypeを常に起動しておかなければならない。
家のMacMiniにVirtual BoxにUbuntu12.04入れてその中でSkype起動して運用している。