mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
30ff0b6aeb
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
43 lines
693 B
Ruby
43 lines
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
|