FTP ** TO ** приложение Rails, размещенное на Heroku? - PullRequest
12 голосов
/ 04 апреля 2011

Простите за странный вопрос, но есть ли возможность, чтобы мое приложение Rails получало передачу по FTP?

У меня есть ежедневная загрузка по FTP, которую я не могу контролировать и которая загружает несколько сотен HTML-страниц на наш существующий сервер.ежедневно.Я хочу переместить этот сайт в развертывание только на Rails в Heroku, но я не могу коснуться этой загрузки по FTP (что все еще должно произойти).

Поскольку Heroku не предлагает общедоступное пространство хранения или FTP,Я не могу загрузить файлы напрямую в Heroku (и я не очень хочу).Мне бы очень хотелось, чтобы загрузка по FTP выполнялась в моем приложении Rails, и чтобы мое приложение Rails получало и анализировало HTML-файлы, чтобы извлечь нужную мне информацию, сохранить ее в базе данных и сделать с ней все, что мне нужно.,(Вроде как действие RESTful, но через FTP вместо любых стандартных глаголов REST.)

Это вообще возможно или я лаю оттого, что так думаю?Если это возможно, как бы я поступил так?

Ответы [ 5 ]

17 голосов
/ 06 апреля 2011

Вы можете запланировать задачу rake с помощью cron, который будет извлекать файлы на ftp-сервер и загружать их в вашу базу данных.

Вот как должен выглядеть ваш файл cron.rake:

    require 'net/ftp'

    task :cron => :environment do
      Dir.chdir("tmp") do
        Net::FTP.open("ftp.example.com") do |ftp|
          ftp.passive = true
          ftp.login('login', 'password')
          ftp.chdir("your_dir")
          ftp.get("your_file")
          # ... Load the files in the database here
        end
      end
    end

Следует помнить две вещи:

  • Не забудьте ftp.passive = true, поскольку Heroku не поддерживает активный режим.
  • Все, что вы хотите сделать, должно содержаться в задаче rake, так как Heroku сотрет каталог tmp, когда задание будет завершено.
4 голосов
/ 05 апреля 2011

Heroku не поддерживает ваше приложение, получающее FTP.

Вы могли бы написать дополнение Heroku для получения FTP, если вы действительно этого хотите.

2 голосов
/ 25 июля 2011

Мне также нужен экземпляр Heroku для получения файлов по FTP.

Я рассматриваю возможность использования Brick FTP .

Когда webhook сигнализирует о загрузке файла, я планирую загрузить и импортировать содержимое файла в базу данных.

1 голос
/ 05 апреля 2011

FTP не поддерживает заголовки хостов, поэтому вам будет трудно получить ваш запрос в сетку Heroku и в ваше приложение, которое я себе представляю.

Я был бы более склонен получить ваши файлы в корзину Amazon S3 ипусть ваше приложение получит файлы оттуда и обработает их таким же образом, или аналогичным образом ваше приложение получит доступ к FTP-серверу и получит файлы для обработки таким образом.

0 голосов
/ 04 апреля 2011

Да, это должно быть возможно.Вам нужно будет заглянуть в модуль net/ftp и проверить, как это работает, но это должно быть возможно.

Я нашел этот проект , который, вероятно, может служить примером.

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