Sugerowałbym przesłanie bezpośrednio do usługi takiej jak Amazon S3, a następnie przetworzenie pliku według własnego uznania w pracy w tle.
Gdy użytkownik prześle plik, możesz mieć pewność, że będzie on bezpiecznie przechowywany w S3. Możesz użyć prywatnego zasobnika, aby zabronić publicznego dostępu. Następnie w zadaniu w tle możesz przetworzyć przesyłanie, przekazując identyfikator URI S3 pliku i pozwól pracownikowi w tle pobrać plik.
Nie wiem, co twój pracownik działający w tle robi z plikiem, ale oczywiste jest, że ponowne pobranie go może nie być konieczne. W końcu jest gdzieś przechowywany.
W przeszłości z powodzeniem używałem klejnotu Carrierwave-direct. Ponieważ wspominasz o Heroku, mają one szczegółowy przewodnik dotyczący przesyłania plików bezpośrednio do S3.