Как сделать некоторые активы частными [дублировать]

Переключитесь на главную ветку и убедитесь, что вы в курсе:

sh git checkout master && git fetch && git pull

Объедините ветвь вашей функции в ведущую ветвь локально:

sh git merge feature_branch

Сбросить локальную ведущую ветвь в состояние начала:

sh git reset origin/master

Теперь все ваши изменения считаются неустановленными. Вы можете выполнить и передать их в одну или несколько коммитов.

sh git add . --all git commit

5
задан lucapette 20 February 2012 в 01:11
поделиться

1 ответ

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

Поскольку вы хотите локально обслуживать файлы, просто поместите их за пределы / public / folder и вне любого из / активов / папок и вы должны быть хорошими. Вы можете узнать больше об общих папках и папках активов здесь: Раздел 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), все равно будет работать с этим решением
7
ответ дан Community 25 August 2018 в 20:33
поделиться
Другие вопросы по тегам:

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