在Heroku上托管的FTP**TO**Rails应用程序?

nee*_*zer 12 ftp heroku ruby-on-rails-3

请原谅这个棘手的问题,但无论如何我的Rails应用程序都会收到FTP传输吗?

我每天都有FTP上传,我无法控制,每天上传几百个HTML页面到我们现有的服务器.我想将此站点移至Heroku上的仅Rails部署,但我无法触及此FTP上载(仍需要进行此操作).

由于Heroku不提供公共存储空间或FTP,我无法将文件直接上传到Heroku(我真的不想).我想要的是将FTP上传指向我的Rails应用程序,并让我的Rails应用程序接收并解析HTML文件以提取我需要的信息,将其存储在数据库中,并做任何我需要做的事情.(有点像RESTful动作,但通过FTP而不是任何标准的REST动词).

这一切都是可能的,还是我因为思考而疯狂?如果有可能,我该怎么做呢?

jbe*_*yez 17

您可以使用cron安排rake任务,该任务将检索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
Run Code Online (Sandbox Code Playgroud)

要记住两件事:

  • 不要忘记,ftp.passive = true因为Heroku不支持活动模式.
  • 你想做的一切都应该包含在rake任务中,因为Heroku将在任务结束后删除tmp目录.


yfe*_*lum 4

Heroku 不支持您的应用程序接收 FTP。

如果你真的想要的话,你可以围绕接收 FTP 编写一个 Heroku 插件。