Class: Geordi::Remote
Constant Summary
collapse
- REMOTE_DUMP_PATH =
'~/dumps/dump_for_download.dump'
Instance Method Summary
collapse
#announce, #fail, #note, #note_cmd, #prompt, #strip_heredoc, #success, #warn
Constructor Details
#initialize(stage) ⇒ Remote
Returns a new instance of Remote.
13
14
15
16
|
# File 'lib/geordi/remote.rb', line 13
def initialize(stage)
@stage = stage
@config = CapistranoConfig.new(stage)
end
|
Instance Method Details
#console(options = {}) ⇒ Object
55
56
57
|
# File 'lib/geordi/remote.rb', line 55
def console(options = {})
shell(options.merge :remote_command => Util.console_command(@config.env))
end
|
#dump(options = {}) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/geordi/remote.rb', line 34
def dump(options = {})
shell options.merge({
:remote_command => "dumple #{@config.env} --for_download",
:select_server => nil })
destination_directory = File.join(@config.root, 'tmp')
FileUtils.mkdir_p destination_directory
destination_path = File.join(destination_directory, "#{@stage}.dump")
relative_destination = Pathname.new(destination_path).relative_path_from Pathname.new(@config.root)
note "Downloading remote dump to #{relative_destination} ..."
server = @config.primary_server
Util.system! "scp #{ @config.user(server) }@#{ server }:#{REMOTE_DUMP_PATH} #{destination_path}"
success "Dumped the #{@stage} database to #{relative_destination}."
destination_path
end
|
#select_server ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/geordi/remote.rb', line 18
def select_server
selected_server = choose do ||
@config.servers.each do |server|
.choice(server) { server }
end
.default = '1'
.prompt = 'Connect to? [1] '
end
puts
selected_server
end
|
#shell(options = {}) ⇒ Object
59
60
61
62
63
64
65
66
67
|
# File 'lib/geordi/remote.rb', line 59
def shell(options = {})
server = options[:select_server] ? select_server : @config.primary_server
remote_command = "cd #{@config.remote_root} && #{@config.shell}"
remote_command << " -c '#{options[:remote_command]}'" if options[:remote_command]
note 'Connecting to ' + server.to_s
Util.system! 'ssh', "#{ @config.user(server) }@#{ server }", '-t', remote_command
end
|