class Ruboty::Docker::Actions::Run
Public Instance Methods
call()
click to toggle source
# File lib/ruboty/docker/actions/run.rb, line 5 def call image_name = message[:image_name] args = message[:args].gsub(/\"/) { $1 }.split('-') args.each do |a| if /^v/ === a set_volumes(a) elsif /^e/ === a set_env(a) elsif /^link/ === a set_link(a) elsif /^net/ === a set_net(a) else set_command(a) end end image = ::Docker::Container.create('Image' => image_name, 'Binds' => @volume, 'Env' => @env, 'Cmd' => @command) message.reply("Start running the #{image_name}...") ::Thread.new { image.tap(&:start).attach do |stream, chunk| message.reply stream message.reply chunk end } rescue => e value = [e.class.name, e.message, e.backtrace].join("\n") message.reply value ensure end
Private Instance Methods
set_command(a)
click to toggle source
# File lib/ruboty/docker/actions/run.rb, line 52 def set_command(a) @command = a.split('/\s/') end
set_env(a)
click to toggle source
# File lib/ruboty/docker/actions/run.rb, line 40 def set_env(a) @env = a.chop.sub(/e /) { $1 }.split(', ') end
set_link(a)
click to toggle source
# File lib/ruboty/docker/actions/run.rb, line 44 def set_link(a) @link = [] << a.sub(/link /) { $1 }.gsub(/\s/) { $1 } end
set_net(a)
click to toggle source
# File lib/ruboty/docker/actions/run.rb, line 48 def set_net(a) @net = [] << a.sub(/net /) { $1 } end
set_volumes(a)
click to toggle source
# File lib/ruboty/docker/actions/run.rb, line 36 def set_volumes(a) @volume = [] << a.sub('v') { $1 }.gsub(' ') { $1 } end