em-ftp-client is a simple EventMachine based FTP Client supporting operations on stream data. The primary interface is EventMachine::FtpClient::Session. A standard usage would look like:
require 'eventmachine'
require 'em-ftp-client'
EM.run do
EM::FtpClient::Session.new("0.0.0.0",
:username => "test",
:password => "1234") do |ftp|
ftp.list do |l1|
puts l1
puts
ftp.cwd("files") do
ftp.list do |l2|
puts l2
puts
ftp.put("one.txt") do
ftp.stream {|d| puts "STREAMING: #{d.inspect}" }
ftp.get("two.txt") do |t1|
puts "COMPLETED"
puts t1
puts
EM.stop
end
end
end
end
end
end
end
This library also includes the class SyncSession, which uses fibers and works with em-synchrony.