module Capistrano::DSL

Public Instance Methods

ask_for_container_id() click to toggle source
# File lib/capistrano/container.rb, line 72
def ask_for_container_id()
  invoke 'container:all'

  ask(:container_id, "container id?")

  fetch(:container_id)
end
container(name, config = {}) click to toggle source
# File lib/capistrano/container.rb, line 10
def container(name, config = {})
  # self gives access to capistrano dsl inside a container instance
  $container_manager.add(name, config)
end
container_by_id(id) click to toggle source
# File lib/capistrano/container.rb, line 44
def container_by_id(id)
  tmp = $container_manager.by_id(id)
  tmp.dsl = self
  tmp
end
container_by_name(name) click to toggle source
# File lib/capistrano/container.rb, line 38
def container_by_name(name)
  tmp = $container_manager.by_name(name)
  tmp.dsl = self
  tmp
end
container_by_roles(roles) click to toggle source
# File lib/capistrano/container.rb, line 31
def container_by_roles(roles)
  $container_manager.by_roles(roles).map do |container|
    container.dsl = self
    container
  end
end
execute_local_or_remote(cmd) click to toggle source
# File lib/capistrano/container.rb, line 84
def execute_local_or_remote(cmd)
  if local_stage?
    run_locally do
      execute cmd
    end
  else
    execute cmd
  end
end
local_stage?() click to toggle source
# File lib/capistrano/container.rb, line 80
def local_stage?
  fetch(:local_stage_name).to_sym == fetch(:stage).to_sym
end
on_container(container, &block) click to toggle source
# File lib/capistrano/container.rb, line 24
def on_container(container, &block)
  on roles(container.container_role) do |host|
    container.dsl = self
    block.call container, host
  end
end
on_container_roles(container_roles, &block) click to toggle source
# File lib/capistrano/container.rb, line 15
def on_container_roles(container_roles, &block)
  container_by_roles(container_roles).each do |container|
    on roles(container.container_role) do |host|
      container.dsl = self
      block.call container, host
    end
  end
end
run_container_command(command, container = nil) click to toggle source
# File lib/capistrano/container.rb, line 50
def run_container_command(command, container = nil)
  if command.include?('{container_id}')
    if container.nil?
      container_id = ask_for_container_id
      container    = container_by_id container_id
    end

    command.gsub!('{container_id}', container.container_id)

    on roles(container.container_role) do |host|
      container.dsl = self

      puts capture("docker #{command}")
    end

  else
    on roles(:container_host) do
      puts capture("docker #{command}")
    end
  end
end