class SimpleProvision::SCP
Constants
- FILENAME
Public Class Methods
new(username, host, opts)
click to toggle source
# File lib/simple_provision/scp.rb, line 6 def initialize(username, host, opts) @username, @host, @opts = username, host, opts end
Public Instance Methods
copy_files()
click to toggle source
# File lib/simple_provision/scp.rb, line 10 def copy_files create_local_archive scp_files_to_server remove_local_archive end
Private Instance Methods
create_local_archive()
click to toggle source
# File lib/simple_provision/scp.rb, line 18 def create_local_archive files = @opts[:files] || [] scripts = @opts[:scripts] || [] includes = files + scripts if includes.empty? raise "Both files and scripts are empty. You should provide some." end cmds = [ "cd provision", "rm -rf tmp", "mkdir tmp", "mkdir tmp/files", "mkdir tmp/scripts" ] files.each { |f| cmds << "cp -r #{f} tmp/files/"} scripts.each { |f| cmds << "cp #{f} tmp/scripts/" } cmds << "cd tmp && tar -czf #{FILENAME} files/ scripts/" if ENV["VERBOSE"] puts "==============Execute Locally============" puts cmds.join("\n") puts "=========================================" end system cmds.join("\n") end
remove_local_archive()
click to toggle source
# File lib/simple_provision/scp.rb, line 59 def remove_local_archive cmds = [ "cd provision", "rm -rf tmp" ] system cmds.join("\n") end
scp_files_to_server()
click to toggle source
# File lib/simple_provision/scp.rb, line 49 def scp_files_to_server path = "provision/tmp/#{FILENAME}" Net::SCP.start(@host, @username) do |scp| scp.upload!(path, ".") end rescue Net::SSH::HostKeyMismatch puts "Please run ssh #{@username}@#{@host} to verify the fingerprint first" end