2011-09-21 2 views
12

Возникла проблема с использованием потоковой передачи HTTP с проектами HAML в рельсах. Он отлично работает, если я использую ERB. По-видимому, я не единственный с this problem.Rails HTTP-потоковая передача с помощью HAML

Он не работает с размещением stream в верхней части контроллера или с использованием render :stream => true в действии.

Как я могу получить потоковое воспроизведение HAML и HTTP, чтобы играть вместе?

Обновление: Я открыл вопрос на странице драгоценного камня, here.

+0

Я полагаю, это связано с тем, что HAML должен отображать всю страницу, прежде чем она сможет начать отправлять что-либо клиенту - это будет проблема дизайна. Я не отправляю это как ответ, потому что я не уверен, и у меня нет времени проверять это сейчас. – Romain

+0

@Romain: Спасибо за ваш вклад. Это тоже мое подозрение, что HAML не переводит отдельные файлы в ERB, но на самом деле ожидает, что весь просмотр будет собран, а затем послужит HTML. Или что-то типа того. Это будет серьезным нарушителем транзакций, теперь, когда 3,1 выходит и потоковая передача доступна. –

+1

Вы пытались посмотреть, есть ли у HAML и/или Rails сообщение об ошибке? Я бы предположил, что установить HAML невозможно (при условии, что мы оба правы в нашем предположении, что не так). – Romain

ответ

2

Это еще не поддерживается Haml (source):

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

Это не то, против чего я категорически против, но это также не что-то, что высоко в моем списке приоритетов, учитывая сложность его реализации.

1

Внутренние элементы Haml таковы, что они действительно записываются в буфер, когда он идет. Тем не менее, «стандартный» API, который Rails традиционно предоставляет для шаблонов языков, является довольно простым вызовом in-and-out. Я не думаю, что у Haml в настоящее время есть «потоковая поддержка», но это просто больше проблема API, чем что-либо еще.

Мне любопытно, как Rails подключается к ERB для этого.

+0

https://github.com/rails/rails/blob/master/actionpack/lib/action_view/template/handlers/erb.rb#L61 – gunn

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