Есть ли задача Rake для FTP? - PullRequest
3 голосов
/ 03 февраля 2009

Я ищу задачу Rake для развертывания через FTP.

Кто-нибудь знает что-нибудь?

Anders

Ответы [ 3 ]

5 голосов
/ 03 февраля 2009

Хорошо, я решил сделать это сам. Код не очень красивый, так как он содержит много обработки исключений, но он выполняет свою работу:)

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
4 голосов
/ 03 февраля 2009

Не знаю, хотя гем Net :: SFTP довольно хорош, вы можете написать новое рейк-задание довольно легко, чтобы сделать то, что вы хотели.

Это также зависит от того, какой тип развертывания вы используете - если это Rails, изучали ли вы Capistrano или Vlad the Deployer ?

2 голосов
/ 28 января 2012

Выше код не работал для меня. Я создал другой: https://gist.github.com/1690647

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...