class EY::Serverside::Slug::Distributor
Attributes
config[R]
servers[R]
shell[R]
Public Class Methods
distribute(data = {})
click to toggle source
# File lib/engineyard-serverside/slug/distributor.rb, line 14 def self.distribute(data = {}) new(data[:config], data[:shell], data[:servers]).call(data) end
new(config, shell, servers)
click to toggle source
# File lib/engineyard-serverside/slug/distributor.rb, line 20 def initialize(config, shell, servers) @config = config @shell = shell @servers = servers end
Private Instance Methods
distribute_to_remotes(input = {})
click to toggle source
# File lib/engineyard-serverside/slug/distributor.rb, line 35 def distribute_to_remotes(input = {}) remotes = input[:remotes] releases_path = "/data/#{input[:app_name]}/releases" package = "#{releases_path}/#{input[:release_name]}.tgz" internal_key = config.paths.internal_key remotes.each do |remote| cmd = "scp -i #{internal_key} #{package} #{remote.user}@#{remote.hostname}:#{releases_path}" unless run_and_success?(cmd) return Failure( input.merge( :error => "Could not copy #{package} to #{remote.hostname}" ) ) end end Success(input) end
find_remotes(input = {})
click to toggle source
# File lib/engineyard-serverside/slug/distributor.rb, line 27 def find_remotes(input = {}) remotes = servers. to_a. reject {|server| server.role.to_sym == :app_master} Success(input.merge(:remotes => remotes)) end