Ответ 1
Heroku не поддерживает ваше приложение, получающее FTP.
Возможно, вы можете написать адрон Heroku для получения FTP, если вы действительно этого хотите.
Извините за упрямый вопрос, но все равно, чтобы приложение Rails получало FTP-передачу?
У меня есть ежедневная загрузка FTP, с которой я не контролирую, которая загружает несколько сотен страниц HTML на наш существующий сервер каждый день. Я хочу переместить этот сайт в Rails-only на Heroku, но я не могу дотронуться до этой загрузки FTP (что все еще должно произойти).
Поскольку Heroku не предлагает публичное пространство для хранения или FTP, я не могу загрузить файлы непосредственно в Heroku (и я действительно не хочу). Мне хотелось бы указать загрузку FTP в мое приложение Rails и получить приложение Rails и проанализировать файлы HTML, чтобы вытащить нужную мне информацию, сохранить ее в базе данных и сделать все, что мне нужно сделать с ней, (Kinda как действие RESTful, но через FTP вместо любого из стандартных глаголов REST).
Возможно ли это, или я лаю с ума от мысли об этом? Если это возможно, как бы я это сделал?
Heroku не поддерживает ваше приложение, получающее FTP.
Возможно, вы можете написать адрон Heroku для получения FTP, если вы действительно этого хотите.
Вы можете запланировать задачу 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 не поддерживает активный режим.Мне также нужен экземпляр Heroku для приема файлов по FTP.
Я рассматриваю возможность использования Brick FTP.
Когда webhook сигнализирует, что файл загружен, я планирую загрузить и импортировать содержимое файла в базу данных.
FTP не поддерживает заголовки хостов, поэтому вы будете пытаться получить ваш запрос в сетке Heroku и в своем приложении, которое я бы себе представил.
Я бы более склонялся к тому, чтобы ваши файлы попали в ведро Amazon S3, и ваше приложение получило оттуда файлы и обработало их таким образом, или аналогичным образом ваше приложение обратится к FTP-серверу и извлечет файлы для обработки, которые путь.
Да, это должно быть возможно. Вам нужно будет изучить модуль net/ftp
и проверить, как это работает, но это должно быть возможно.
Я нашел этот проект, который, вероятно, может служить примером.