OpenURI:: HTTPError 403 Forbidden - открыть url скрепки для ресурса, хранящегося на S3 (fog gem)


У меня есть вызов моему контроллеру документов действие загрузки, чтобы обслуживать клиента с загружаемым объектом, полученным из s3. Однако OpenURI, похоже, испытывает проблемы с синтаксическим анализом url-адреса, сохраненного скрепкой. Этот URL-адрес доступен для посещения в браузере без каких-либо проблем, но при попытке открыть его в контроллере я получаю 403 запрещенную ошибку.

documents_controller

  def download
    data = open(Document.find(params[:id]).upload.url)
    send_data data.read, :type => data.content_type, :x_sendfile => true
  end

Пример url-адреса будет

"https://s3.amazonaws.com/mybucket/documents/1/Screen_Shot.png?1372238888"

Ошибка-OpenURI:: HTTPError 403 Запрещено стрельба на первой линии действия, когда откроется URL-адрес. Есть идеи, что это может быть?

1 6

1 ответ:

Ошибка 403 может возникнуть, если URL-адрес не имеет строкового формата. Использование интерполяции строк в аналогичном примере для почтовых вложений сработало для меня:

doc = order.document
attachments["Order.pdf"] = File.read(open("#{doc}"))