Witam. W mojej aplikacji w jednej akcji kontrolera parsuje wiele plików json, zapisuje wyniki parsowania do oddzielnych modeli i wyciągam z nich ostatnio dodany rekord. (osobno z każdego modelu do którego zapisywałem sparsowane dane). Następnie prezentuje je w widoku.
Chciałbym przyśpieszyć otrzymywanie danych w widoku poprzez możliwość renderowania od razu pojedynczego parsowania zamiast czekać na wykonanie wszystkich parsowań, zapisów i selectów.
Chciałbym uzyskać w mojej akcji kontrolera coś w stylu:
parsuje pierwszy dokument -> zapisuje do bazy -> wyciągam z bazy -> widok
parsuje drugi dokument -> zapisuje do bazy -> wyciągam z bazy -> widok
itd…
W jaki sposób uzyskać taki efekt ? Teraz działa to tak, że muszę czekać aż zostaną sparsowane wszystkie dokumenty, żeby uzyskać ich prezentacje w widoku co trwa długo.
Ja bym podszedł raczej jak najprościej do tematu i zrobił to z wykorzystaniem chociażby wbudowanego w rails 5 ActionCable, albo innego websocketowego klienta.
Nie do końca wiem co trigger’uje parsowanie tych dokumentów, ale może zrobić to tak, że ładujesz pusty widok z jakimś kręciołem. W widoku masz załadowanego klienta do twojego kanału websocketowego. Tam jakimś javascriptem czy czymkolwiek triggerujesz parsowanie dokumentów, a w kontrolerze po skończeniu parsowania konkretnego jednego dokumentu, przesyłasz wynik do przeglądarki websocketem.