在Rails中存储数千个文件

时间:2011-06-01 16:49:23

标签: ruby-on-rails file upload storage

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

该应用需要:

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

  • 允许用户以两种方式向TIFF集合添加新文件。

    • 将新文件添加到根路径 如上所述,将被检测到 应用程序并已处理

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

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

1 个答案:

答案 0 :(得分:1)

不是直接引用运行Rails应用程序的服务器上的本地PATH,而是最好使用Capistrano部署应用程序,并将公共文件夹下的文件夹符号链接到文件根目录。

例如,在rails root:

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

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

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