Хранение тысяч файлов в Rails - PullRequest
0 голосов
/ 01 июня 2011

Я работаю над приложением Rails, которое опирается на большие коллекции (1000 файлов) по 50 МБ + TIFF-файлов. Проблема, которую я имею, определяет, как обращаться с обработкой. В более старой версии приложения пользователь должен был указать путь (предпочтительно подключенный диск SAN на сервере) в файле конфигурации, который стал корневым для всех коллекций TIFF, и этот путь использовался приложением для выполнения действий. вся обработка.

Приложение должно:

  • Выполните пакетную обработку (создание JPG, изменение размера, добавление текстовых меток и т. Д. С использованием RMagick) TIFF с заданным путем, как в старой версии. Мы по-прежнему будем требовать от пользователя указать путь, который будет служить корневым для всех проектов.

  • Разрешить пользователям добавлять новые файлы в коллекции TIFF двумя способами.

    • Добавление новых файлов в корневой путь как указано выше, который будет обнаружен приложение и обработано

    • Загрузить файлы через веб-интерфейс пользователя, который затем сохраняется в корне путь.

Интересно, это приемлемый способ для достижения этого? Причина, по которой нам нужен корневой путь в конфигурации, заключается в том, что размеры файлов просто слишком велики, чтобы загрузить все из веб-интерфейса. Представьте, сколько времени займет загрузка 1000 файлов TIFF, каждый размером не менее 50–100 МБ. Я не могу придумать альтернатив, чтобы справиться с этим. Любые идеи будут оценены.

1 Ответ

1 голос
/ 01 июня 2011

Вместо прямой ссылки на локальную переменную PATH на сервере, на котором запущено приложение Rails, лучше использовать Capistrano для развертывания вашего приложения и создать символическую ссылку на публичную папку в корневом каталоге вашего файла.

Например, в корне рельсов:

ln -fs / var / lib / огромный_файл_collection public / files

Тогда приложение Rails всегда будет иметь согласованное местоположение для файлов (которое может храниться в константах), а Capistrano можно использовать для динамической привязки того местоположения, которое вы используете, к правильному пути в приложении rails.

Конечно, оператор-волна может затем использовать папку public / files в качестве корня для загружаемых файлов, если это необходимо.

...