我正在寻找通过FTP进行部署的Rake任务。
有人知道吗?
的Anders
答案 0 :(得分:5)
好的,我决定自己做。代码不是很漂亮,因为它包含很多异常处理,但它完成了工作:)
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
答案 1 :(得分:4)
虽然我知道虽然Net::SFTP宝石很漂亮,但你可以很容易地写一个new rake task来做你想做的事。
这还取决于您正在进行的部署 - 如果是Rails,您是否考虑了Capistrano或Vlad the Deployer?
答案 2 :(得分:2)
以上代码对我不起作用。 我创造了不同的一个: https://gist.github.com/1690647