Как записать в файл csv через ftp в rails 3? - PullRequest
0 голосов
/ 15 июля 2011

Я пытаюсь записать в CSV-файл через FTP.Вот что у меня есть:

require 'net/ftp'
require 'csv'

users = User.users.limit(5)

csv_string = CSV.generate do |csv|
  csv << ["email_addr", "first_name", "last_name"]

  users.each do |user|
    new_line = [user.email, user.first_name, user.last_name]
    csv << new_line
  end
end

csv_file = CSV.new(csv_string)

ftp = Net::FTP.new('**SERVER NAME**')
ftp.login(user = "**USERNAME**", passwd = "**PASSWORD**")
ftp.storbinary('STOR ' + 'my_file.csv', csv_file)
ftp.quit()

Я получаю сообщение об ошибке «неверное количество аргументов (2 для 3)».Когда я изменяю строку на ftp.storbinary ('STOR' + 'my_file.csv', csv_file, 1024), он говорит "неправильное количество аргументов (1 для 0)".Я также попытался использовать storlines вместо этого, но это также дало мне ошибки.У кого-нибудь есть идеи, как с этим справиться?

Ответы [ 2 ]

1 голос
/ 20 февраля 2014
require 'net/ftp'

Вход на FTP-сервер

ftp = Net::FTP.new('ftp.sample.com', 'test', 'pass')

OR

ftp = Net::FTP.new('ftp.sample.com')
ftp.login('test', 'pass')

Переключиться на нужный каталог

ftp.chdir('source/files')

Получите нужный нам файл и сохраните его в нашем каталоге 'ftp_photos'

ftp.getbinaryfile('photos_2009-03-29.zip', 'ftp_photos/photos.zip')

Мы закончили, поэтому нам нужно закрыть соединение

ftp.close

http://travisonrails.com/2009/03/29/ruby-net-ftp-tutorial

Это вам поможет.

0 голосов
/ 15 июля 2011

В строке

ftp.storbinary('STOR ' + 'my_file.csv', csv_file)

csv_file должен быть фактическим объектом File, а не объектом другого типа.

> (из рубинового ядра)

storbinary (cmd, файл, размер блока, rest_offset = nil) {| data | ...}


Переводит соединение в двоичный (образный) режим, выдает указанную серверную сторону команда (например, «STOR myfile») и отправляет содержимое файла с именем file на сервер. Если указан необязательный блок, он также передает ему данные, в куски блоковых символов.

...