【问题标题】:Storage of thousands of files in Rails在 Rails 中存储数千个文件
【发布时间】:2011-09-06 11:34:53
【问题描述】:

我正在开发一个依赖于 50MB+ TIFF 文件的大型集合(1000 个文件)的 Rails 应用程序。我遇到的麻烦是确定如何处理处理。在旧版本的应用程序中,用户必须在配置文件中指定一个路径(最好是服务器中安装的 SAN 驱动器),该路径成为所有 TIFF 集合的根目录,应用程序使用此路径来执行所有的处理。

应用需要:

  • 对给定路径的 TIFF 进行批处理(创建 JPG、调整大小、使用 RMagick 添加文本标签等),如旧版本。我们仍将要求用户指定一个路径以作为所有项目的根。

  • 允许用户通过两种方式将新文件添加到 TIFF 集合中。

    • 将新文件添加到根路径 像上面一样,这将被检测到 应用程序和处理

    • 上传 通过网络用户界面文件, 然后将其存储在根目录中 路径。

我想知道这是否是实现这一目标的可接受方式。我们需要配置中的根路径的原因是文件太大而无法从 Web 界面上传所有内容。想象一下上传 1,000 个 TIFF 文件需要多长时间,每个文件大小至少为 50MB~100MB。我想不出任何替代方法来处理它。任何想法将不胜感激。

【问题讨论】:

  • 你用什么 gem 来处理文件?
  • 对于上传,carrierwave——但对于通过本地访问的批处理,我想我将使用标准的 Ruby File IO。

标签: ruby-on-rails file upload storage


【解决方案1】:

与其直接引用运行 Rails 应用程序的服务器上的本地 PATH,不如使用 Capistrano 部署应用程序,并将 public 下的文件夹符号链接到文件根目录。

例如,在rails root中:

ln -fs /var/lib/huge_file_collection public/files

然后 Rails 应用程序将始终具有一致的文件位置(可以存储在常量中),并且 Capistrano 可用于将您使用的任何位置动态链接到 Rails 应用程序内的正确路径。

当然,如果需要,carrier-wave 也可以使用 public/files 文件夹作为上传文件的根目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-31
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2021-01-27
    • 2010-10-29
    相关资源
    最近更新 更多