# $HOME/.screenrc hardstatus alwayslastline "[%02c] %-w %{.r.}%{!}%n%f%t%{dd} %+w %= %0`" backtick 0 0 0 ${HOME}/.screen/backtick.rb
#!/usr/bin/env ruby # $HOME/.screen/backtick.rb require "logger" require "open-uri" class Backtick def self.start @@instance ||= self.new @@instance.run end def initialize $stdout.sync = true @logger = Logger.new(File.expand_path('~/.screen/backtick.log'), 'daily') @logger.level = Logger::DEBUG @reload_flag = '/tmp/backtick-flag' end def run loop do reload if File.exist? @reload_flag results = [] Functions.private_instance_methods.each do |action| ret = Functions.send(action) @logger.debug("#{action} => #{ret}") results << ret end @logger.debug("result => #{results.inspect}") puts results.map {|i| "[#{i}]" }.join(' ') sleep 60 end end def reload File.delete @reload_flag load $0 end module Functions module_function def notify_ldr ret = '' open("http://rpc.reader.livedoor.com/notify?user=aereal") do |out| ret << out.read end count = ret.split('|')[1] "LDR: #{count}" rescue => e @logger.error(e) end end end Backtick.start
Backtick::Functions に定義されているメソッドを片っ端から実行して、その返り値を結合して出力する。
/tmp/backtick-flag というファイルが作られていると、そのファイルを消したのちに自分自身を読みなおす。
いまのところ、LDRの未読件数を表示するだけになっている。いろいろ追加して遊んでみるのもよさそう。