Задать вопрос

Ruby on Rails: где хранить медиафайлы?

Добрый вечер.

Занимаюсь переносом небольшого проекта в php(yii) на ror. При этом с рельсами абсолютно не знаком, изучаю по ходу дела.
В общем освоение идет довольно резво, видимо сказывается знание нескольких php фреймворков. Но некоторые моменты не ясны. Один из них: как хранить большие медиафийлы? Под медиафайлами я имею в виду статику, которая не участвует непосредственно в формировании страницы. Это хранилище файлов, доступных для загрузки пользователями.

При работе на php в директории приложения было две поддиректории: www, которая содержала исполняемые файлы приложения. И рядом вторая - storage, в которой лежала вся статика. На нее ссылался отдельный поддомен и работа происходила через него.

Технически организовать это было несложно. В конфигах Yii объявлялся алиас и дальше работа велась с ним.

А как организовать такую же логику на рельсах? Первая мысль была поместить хранилище в диреткорию public, но в таком случае файлы все-равно будут лежать в директории с исполняемыми файлами. Спросил бы гугл, но, честно сказать, не знаю, что спрашивать.

Подскажите, как сделать это в рельсовом приложении?
  • Вопрос задан
  • 3930 просмотров
Подписаться 6 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 3
делается это созданием каталога на сервере, который лежит отдельно от приложения и при каждом деплое симлинкается в public каталог

подробнее:

если файлы заливают пользователи, то загружать их можно гемами paperclip или carrierwave
оба гема будут заливать файлы куда-то, например в каталог public/screenshots

этот каталог вам нужно будет засунуть в .gitignore, чтобы он не попал в репозиторий

приложение вы деплоите, надеюсь, через capistrano

на продакшен сервере в каталоге, куда будет идти деплой, в shared каталоге нужно будет создать ваш каталог
и задать в конфиге капистрано, чтобы капистрано делал симлинк из #{shared_path}/screenshots в #{release_path}/screenshots

пример куска конфига для capistrano 3: take.ms/NwlI9
надо задать лишь имена файлов и каталогов, а капистрано затем всё сделает сам
Ответ написан
Комментировать
Храните на Amazon S3.
Ответ написан
Комментировать
@flskif
При загрузке пользователями вы можете сохранять файлы в любую папку на сервере какая вам удобна (выше давали ссылки как настроить паперклип чтобы он сохранял куда вам надо). Так как это статика, вам вообще не нужны рельсы чтобы отдавать ее. Просто настройте что-нибудь что будет отдавать файлы (nginx например).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы