Module: Capistrano::DSL

Defined in:
lib/capistrano/container.rb

Instance Method Summary collapse

Instance Method Details

#ask_for_container_idObject



77
78
79
80
81
82
83
# File 'lib/capistrano/container.rb', line 77

def ask_for_container_id()
  invoke 'container:all'

  ask(:container_id, "container id?")

  fetch(:container_id)
end

#container(name, config = {}) ⇒ Object



15
16
17
18
# File 'lib/capistrano/container.rb', line 15

def container(name, config = {})
  # self gives access to capistrano dsl inside a container instance
  $container_manager.add(name, config)
end

#container_by_id(id) ⇒ Object



49
50
51
52
53
# File 'lib/capistrano/container.rb', line 49

def container_by_id(id)
  tmp = $container_manager.by_id(id)
  tmp.dsl = self
  tmp
end

#container_by_name(name) ⇒ Object



43
44
45
46
47
# File 'lib/capistrano/container.rb', line 43

def container_by_name(name)
  tmp = $container_manager.by_name(name)
  tmp.dsl = self
  tmp
end

#container_by_roles(roles) ⇒ Object



36
37
38
39
40
41
# File 'lib/capistrano/container.rb', line 36

def container_by_roles(roles)
  $container_manager.by_roles(roles).map do |container|
    container.dsl = self
    container
  end
end

#execute_local_or_remote(cmd) ⇒ Object



89
90
91
92
93
94
95
96
97
# File 'lib/capistrano/container.rb', line 89

def execute_local_or_remote(cmd)
  if local_stage?
    run_locally do
      execute cmd
    end
  else
    execute cmd
  end
end

#local_stage?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/capistrano/container.rb', line 85

def local_stage?
  fetch(:local_stage_name).to_sym == fetch(:stage).to_sym
end

#on_container(container, &block) ⇒ Object



29
30
31
32
33
34
# File 'lib/capistrano/container.rb', line 29

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) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/capistrano/container.rb', line 20

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) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/capistrano/container.rb', line 55

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