зеркало из https://github.com/github/ruby.git
44 строки
693 B
Ruby
44 строки
693 B
Ruby
#
|
|
# dcdbiff.rb - distributed cdbiff (client)
|
|
# * original: cdbiff by Satoru Takabayashi <http://namazu.org/~satoru/cdbiff>
|
|
|
|
require 'drb/drb'
|
|
require 'drb/eq'
|
|
|
|
class Notify
|
|
include DRbUndumped
|
|
|
|
def initialize(biff, command)
|
|
@biff = biff
|
|
@command = command
|
|
|
|
@biff.add_observer(self)
|
|
end
|
|
|
|
def update(filename, time)
|
|
p [filename, time] if $DEBUG
|
|
system(@command)
|
|
end
|
|
|
|
def done
|
|
begin
|
|
@biff.delete_observer(self)
|
|
rescue
|
|
end
|
|
end
|
|
end
|
|
|
|
def main
|
|
command = 'eject'
|
|
uri = 'druby://localhost:19903'
|
|
|
|
DRb.start_service
|
|
biff = DRbObject.new(nil, uri)
|
|
notify = Notify.new(biff, command)
|
|
|
|
trap("INT"){ notify.done }
|
|
DRb.thread.join
|
|
end
|
|
|
|
main
|