Upload big files with Capistrano
Guy Naor has a nice tip to help with large file uploading in Capistrano.
class Capistrano::Actor
# A saner put replacement that doesn't read the whole file into memory...
def put_file(path, remote_path, options = {})
raise "put_file can only be used with SFTP" unless Capistrano::SFTP && options.fetch(:sftp, true)
execute_on_servers(options) do |servers|
servers.each do |server|
logger.info "uploading #{File.basename(path)} to #{server}"
sftp = sessions[server].sftp
sftp.connect unless sftp.state ==
pen
sftp.put_file path, remote_path
logger.debug "done uploading #{File.basename(path)} to #{server}"
end
end
end
end
and I had to update it for Capistrano 2.0:
module Capistrano
class Configuration
module Actions
module FileTransfer
# A saner put replacement that doesn't read the whole file into memory...
def put_file(path, remote_path, options = {})
execute_on_servers(options) do |servers|
servers.each do |server|
logger.info "uploading #{File.basename(path)} to #{server}"
sftp = sessions[server].sftp
sftp.connect unless sftp.state ==
pen
sftp.put_file path, remote_path
logger.debug "done uploading #{File.basename(path)} to #{server}"
end
end
end
end
end
end
end
2 comments.
Leave a Reply