Skip to content

Instantly share code, notes, and snippets.

@pocari
Created November 4, 2015 16:36
Show Gist options
  • Save pocari/8bfedd7f260f7b530463 to your computer and use it in GitHub Desktop.
Save pocari/8bfedd7f260f7b530463 to your computer and use it in GitHub Desktop.
Ruby Docker Client sample
require 'docker'
require 'observer'
class DockerEvents
include Observable
def run
Docker::Event.stream do |ev|
changed
notify_observers(ev)
end
end
end
module DockerEventHandler
def update(ev)
method_name = event_method_name(ev)
send(method_name, ev) if respond_to? method_name
end
def event_method_name(ev)
"on_#{ev.status}"
end
end
class ContainerUpDownHandler
include DockerEventHandler
def on_start(ev)
p [:start, ev]
end
def on_die(ev)
p [:die, ev]
end
end
if $0 == __FILE__
events = DockerEvents.new
events.add_observer(ContainerUpDownHandler.new)
events.run
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment