provedor de hospedagem capistrano + ftp apenas

A história

Você obtém o cliente, ele compra hospedagem barata apenas com FTP. Agora, nos tempos modernos, todos nós usamos git, VM, alguns CI e Capistrano para facilitar o trabalho. Oh e FTP?

A solução

Cliente de ftp CLI LFTP, difícil de entender, mas no geral uma ótima ferramenta. Abaixo está meu arquivo Cap para tais hosts.

config / deploy.rb

#APP
set :application, "GreatWebsite"
set :app_path, "./worpdress/"
set :scm, :none

#FTP
set :login, "great_website"
set :password, "changeme"
set :ftp_host, "www.great_website.squarebox.eu"
set :deploy_to, "/domains/www.great_website.si/public/"

Capfile

load 'config/deploy'

desc
"FTP Sync && Mount"
namespace :deploy do

desc
"Sync remote by default"
task
:default do
remote
.default
end

namespace :remote do
desc
"Mount remote to local #{application}"
task
:mount do
`mkdir ./mnt/#{application} -p`
`curlftpfs ftp://#{login}:#{password}@#{url} ./mnt/#{application}`
end

desc
"Unmount #{application}"
task
:umount do
`fusermount -u ./mnt/#{application}`
end

desc
"Sync to remote server using lftp"
task
:sync do
`lftp -c "set ftp:list-options -a; open ftp://#{login}:#{password}@#{ftp_host}; lcd #{app_path}; cd #{deploy_to}; mirror --reverse --delete --use-cache --verbose --allow-chown --allow-suid --no-umask --parallel=2 --exclude-glob .git --exclude-glob *.log"`

end

desc
"Sync app to remote server"
task
:default do
self.sync
end
end

end