Как выполнить синхронный send_file в Rails 3 - PullRequest
0 голосов
/ 14 декабря 2011

Я знаю, что rails3 переместился в промежуточное программное обеспечение стойки на основе async send_file.Для моего случая использования мне нужно выполнить синхронный блокировку sendfile.Как вы делаете это в Rails3?

class SomeControlle
  def send_it
    Foo.prepare_file do |f|
      send_file f  # I want this to be blocking
    end
  end
end

class Foo
  def self.prepare_file(&block)
    create tmp file
    yield file
    ensure
      unlink tmp file
  end
end

ОБНОВЛЕНИЕ:

Используя предоставленную Амаданом ссылку, я теперь могу блокировать файл в браузере.Мое последнее препятствие состоит в том, чтобы выяснить, почему размер файла показывает в качестве -1 байта в моем prod env, но показывает правильный размер файла локально.

Что у меня сейчас есть:

DocProcessor.new().prepare_for_download(@file) do |f|
  # send_file f
  response.headers['Content-Type'] = @file.content_type
  response.headers['Content-Disposition'] = "attachment; size=\"#{@file.file_size}\"; filename=\"#{@file.original_filename}\""
  render :text => open(f, 'rb').read
end

Любая идея, почемуразмер файла в загрузке будет показывать -1 байт?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...