Подтвердить что ты не робот

FTP ** TO ** Rails приложение, размещенное на Heroku?

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

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

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

Возможно ли это, или я лаю с ума от мысли об этом? Если это возможно, как бы я это сделал?

4b9b3361

Ответ 1

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

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

Ответ 2

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

Вот как выглядит ваш файл 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 после завершения задачи.

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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