【问题标题】:How to deploy to Heroku without losing tmp files?如何在不丢失 tmp 文件的情况下部署到 Heroku?
【发布时间】:2014-08-06 15:58:31
【问题描述】:

我有一个每 12 小时运行一次的计划作业,它将图像文件从 FTP 服务器解压缩到我的 tmp 文件夹中。问题是由于 Heroku 的临时文件系统,每当我部署新代码时,当 dyno 重新启动并且文件不再存在时,tmp 文件夹就会被清除。我希望能够随意部署代码,而无需担心。

我曾考虑创建第二个应用程序来运行此任务并连接到同一个数据库。根据this SO answer。这样我可以将与此任务无关的代码更新部署到我的生产服务器,并且可以更有选择性地选择何时部署到第二台服务器。

有没有人有过在同一个数据库上运行两个应用程序的经验?还是有更好的方法来解决我的问题?我读过 Heroku 可能随时更改数据库 URL,因此第二个应用程序可能会失去连接。这有多普遍?谢谢!

【问题讨论】:

  • 依赖/tmp 永久化是自找麻烦。考虑将文件存储在 s3(或类似)上

标签: ruby-on-rails ruby-on-rails-3 postgresql heroku ruby-on-rails-3.2


【解决方案1】:

我会在 public 下创建一个文件夹,例如公共/存储并在此处保存解压缩的文件。

【讨论】:

  • 虽然这似乎不是最佳做法。它确实解决了我的问题。我有一个任务会在清除已上传的文件后立即运行,这样应用程序就不会变得过于臃肿。我想我会在接下来的几天里从我的主应用程序中提取这个提要功能到一个单独的应用程序中,以构建一个简单的 api/gem,这样我的主应用程序就可以查询 api 并以这种方式自我更新,而无需共享数据库。上传到 S3 只会减慢一切,一旦文件上传到我的数据库,我就不需要保留这些文件,所以这似乎没有必要。
  • 我提出了一个可能的解决方案。 S3 或外部存储将是理想的解决方案。但对于您的迫切需要,我的解决方案将起作用。
【解决方案2】:

我相信在 Heroku 上使用应用程序是可能的。

看看这个:https://devcenter.heroku.com/articles/s3

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 2012-01-25
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多