class EY::Serverside::Slug::Enabler
Attributes
config[R]
servers[R]
shell[R]
Public Class Methods
new(config, shell, servers)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 17 def initialize(config, shell, servers) @config = config @shell = shell @servers = servers end
Private Instance Methods
all_releases(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 85 def all_releases(data) "#{app_path(data)}/releases" end
app_path(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 93 def app_path(data) "/data/#{data[:app_name]}" end
create_release(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 65 def create_release(data) "mkdir -p #{release_path(data)}" end
current_path(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 89 def current_path(data) "#{app_path(data)}/current" end
enable_local(data = {})
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 43 def enable_local(data = {}) unless run_and_success?(local_command(data)) return Failure(data.merge(:error => "Could not enable #{data[:release_name]} on the app master")) end data[:enabled].push(servers.first {|server| server.role == :app_master || server.role == :solo}) Success(data) end
enable_remotes(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 24 def enable_remotes(data) enabled = [] remotes.each do |remote| if run_and_success?(remote_command(remote, data)) enabled.push(remote) else return Failure( data.merge( :enabled => enabled, :error => "Could not enable #{data[:release_name]} on #{remote.hostname}" ) ) end end Success(data.merge(:enabled => enabled)) end
link_current(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 73 def link_current(data) "ln -nsf #{release_path(data)} #{current_path(data)}" end
local_command(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 61 def local_command(data) "#{unarchive(data)} && #{link_current(data)}" end
package(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 77 def package(data) "#{release_path(data)}.tgz" end
release_path(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 81 def release_path(data) "#{all_releases(data)}/#{data[:release_name]}" end
remote_command(remote, data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 57 def remote_command(remote, data) "ssh -i #{config.paths.internal_key} #{remote.user}@#{remote.hostname} '#{create_release(data)} && #{unarchive(data)} && #{link_current(data)}'" end
remotes()
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 53 def remotes servers.reject {|server| server.role == :app_master} end
unarchive(data)
click to toggle source
# File lib/engineyard-serverside/slug/enabler.rb, line 69 def unarchive(data) "tar -C #{release_path(data)} -z -x -f #{package(data)}" end