class Capistrano::Container::Instance
Attributes
config[R]
dsl[W]
name[R]
Public Class Methods
new(name, config)
click to toggle source
# File lib/capistrano/container/instance.rb, line 10 def initialize(name, config) @dsl = nil @name = name @config = {shared_on_host: '/tmp'}.merge(config) end
Public Instance Methods
container_id()
click to toggle source
# File lib/capistrano/container/instance.rb, line 24 def container_id return @name unless @config.key? :container_id @config[:container_id] end
container_role()
click to toggle source
# File lib/capistrano/container/instance.rb, line 30 def container_role "container_#{@name}".to_sym end
cp(src, target)
click to toggle source
# File lib/capistrano/container/instance.rb, line 70 def cp(src, target) command = "docker cp #{src} #{target}" @dsl.execute_local_or_remote(command) end
download!(src, target)
click to toggle source
# File lib/capistrano/container/instance.rb, line 49 def download!(src, target) if @dsl.local_stage? self.cp("#{container_id}:#{src}", target) return end tmp = "#{@config[:shared_on_host]}/capistrano-docker.#{SecureRandom.uuid}.tmp" self.cp("#{container_id}:#{src}", tmp) @dsl.download!(tmp, target) @dsl.execute("rm -rf #{tmp}") end
execute(command)
click to toggle source
# File lib/capistrano/container/instance.rb, line 64 def execute(command) command = "docker exec -i #{container_id} sh -c '#{command.gsub("'", "\'")}'" @dsl.execute_local_or_remote(command) end
has_role?(role)
click to toggle source
# File lib/capistrano/container/instance.rb, line 16 def has_role?(role) return false unless @config.key? :roles role = role.to_s if role.is_a? Symbol @config[:roles].include? role end
invoke(task_name)
click to toggle source
# File lib/capistrano/container/instance.rb, line 76 def invoke(task_name) @dsl.invoke "container:#{@name}:#{task_name}" end
upload!(src, target)
click to toggle source
# File lib/capistrano/container/instance.rb, line 34 def upload!(src, target) if @dsl.local_stage? self.cp(src, "#{container_id}:#{target}") return end tmp = "#{@config[:shared_on_host]}/capistrano-docker.#{SecureRandom.uuid}.tmp" @dsl.upload!(src, tmp) self.cp(tmp, "#{container_id}:#{target}") @dsl.execute("rm -rf #{tmp}") end