Где разместить личные документы для использования в приложениях Rails? - PullRequest
5 голосов
/ 20 февраля 2012

У меня есть несколько файлов шаблонов, которые я хотел бы использовать в своем приложении rails. Мне было интересно, где (в каком каталоге) поместить их, учитывая два сценария:

  1. Они являются частными для моего приложения (только веб-мастер может удалить, изменить их)
  2. Они являются частными для моего приложения, но также могут управляться администраторами (удалено, изменено)

1 Ответ

7 голосов
/ 20 февраля 2012

Обновление после комментариев

Поскольку вы хотите обслуживать файлы локально, просто поместите их вне папки / public / и вне любой из /активы / папки, и вы должны быть хорошими.Подробнее о папках public и assets можно прочитать здесь: Раздел 2 Как использовать конвейер активов Скажем так:

/private/

Полагаю Раздел11 send_file , также используемый в вопросе SO, связанном с моим первоначальным ответом ниже, по-прежнему является способом предоставления доступа к файлам через контроллер, а не статически.Адаптировано из документов:

send_file("#{Rails.root}/private/#{filename}",
          :filename => "#{filename}",
          :type => "application/pdf", #for example if pdf
          :disposition => 'inline') #send inline instead of attachment

Оригинальный ответ для удаленного обслуживания вместе с файлом send_file ниже

Относительно 1) файлов, приватных дляприложение Вы можете заблокировать эти личные файлы в системе, такой как Amazon S3, которая обеспечивает авторизованный доступ, как объясняет Callmeed в этот вопрос SO .Тогда только ваше приложение сможет авторизовать доступ к файлу.

Относительно 2) также доступно для администраторов

Проблема с использованием только части 1) заключается в том, что оноразблокирует файлы на ограниченный период времени, в течение которого я предполагаю, что они общедоступны.Так что, если вы хотите обойти это, я думаю, вам нужно взять решение от Павла Шведа в том же вопросе SO, приведенном выше.

В этом решении файлы предоставляются через маршрут / контроллер, который предоставляет двоичный файлданные файла вместо использования URL-адреса, указывающего на файл.

Комбинированное решение

Считайте файл из S3 только с вашим приложением, которому разрешено делать этот доступ (не открывая это публично).Затем предоставьте данные непосредственно через контроллер, который может авторизовать кого угодно.

Предостережения

  • Предоставление двоичных данных непосредственно из контроллера может привести к снижению производительности.приложения, если оно используется часто, но я никогда не пробовал.
  • Если вы можете найти более простой способ выполнить часть 1), часть 2) все равно будет работать с этим решением
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...