2014-09-23 3 views
0

Я пытаюсь отобразить загруженные файлы в формате PDF с помощью метода контроллераОтображение PDF с помощью send_file

class DocumentsController < ApplicationController 
    def show 
    response.headers['X-Sendfile-Type'] = "X-Sendfile" 
    send_file(@document.file.path, filename: @document.file.name, type: "application/pdf", disposition: :inline) 
    end 
end 

Это отлично работает локально, но на Heroku я получаю неявную ошибку приложения без дополнительной трассировки стека

at=info method=GET path="/documents/21" host=myapp.herokuapp.com request_id=754f6d15-cb06-43a1-aa3c-308e5308b54e fwd="76.21.40.212" dyno=web.1 connect=29ms service=27ms status=500 bytes=1543 

Я попытался установить config.action_dispatch.x_sendfile_header = "X-Sendfile" в config/environment/production.rb, но это заставляет все активы приложения не загружаться в производство.

Что мне не хватает?

ответ

1

Цитирование Heroku's documentation (курсив мой):

Heroku не поддерживает использование Rack :: SendFile. Стойка: Sendfile обычно требует наличия веб-сервера с интерфейсом, такого как nginx или apache, на том же компьютере, что и сервер приложений. Это не то, как Героку архивируется.

Чтобы serve static files and uploads from a Heroku app, лучше всего использовать услугу, как Amazon S3 для хранения:

AWS S3, или аналогичных услуг по хранению, имеют важное значение при проектировании приложений для масштаба и являются прекрасным дополнением к Эфемерная файловая система Героку.

+3

достаточно справедливо. Есть ли способ отображать файлы на героку? –

Смежные вопросы