Je suis à la recherche d'une tâche Rake pour effectuer un déploiement via FTP.Existe-t-il une tâche Rake pour FTP?
Quelqu'un sait-il?
Anders
Je suis à la recherche d'une tâche Rake pour effectuer un déploiement via FTP.Existe-t-il une tâche Rake pour FTP?
Quelqu'un sait-il?
Anders
Ok, j'ai décidé de le faire moi-même. Le code n'est pas très beau car il contient beaucoup de gestion des exceptions, mais il fait le travail :)
require 'rake'
require 'net/ftp'
def ftp_files(prefixToRemove, sourceFileList, targetDir, hostname, username, password)
Net::FTP.open(hostname, username, password) do |ftp|
begin
puts "Creating dir #{targetDir}"
ftp.mkdir targetDir
rescue
puts $!
end
sourceFileList.each do |srcFile|
if prefixToRemove
targetFile = srcFile.pathmap(("%{^#{prefixToRemove},#{targetDir}}p"))
else
targetFile = srcFile.pathmap("#{targetDir}%s%p")
end
begin
puts "Creating dir #{targetFile}" if File.directory?(srcFile)
ftp.mkdir targetFile if File.directory?(srcFile)
rescue
puts $!
end
begin
puts "Copying #{srcFile} -> #{targetFile}" unless File.directory?(srcFile)
ftp.putbinaryfile(srcFile, targetFile) unless File.directory?(srcFile)
rescue
puts $!
end
end
end
end
task :ftp => [:dist] do
ftp_files("dist", FileList["dist/**/*"], "remote_dir", 'host.com', 'user', 'pwd')
end
Pas que je sache de bien le joyau Net::SFTP est assez agréable, vous pouvez écrire un new rake task assez facilement à faire ce que vous voulez.
Cela dépend aussi du type de déploiement que vous faites - si ses Rails, avez-vous regardé dans Capistrano ou Vlad the Deployer?
Le code ci-dessus n'a pas fonctionné pour moi. J'ai créé un différent: https://gist.github.com/1690647