Je construis une application Rails (5.0.4, Ruby 2.3.3) qui crée un fichier PDF avec Prawn, et l'envoie à l'utilisateur, en utilisant send_data de ActionController, comme ceci :
# data is a Prawn document
send_data data, type: 'application/pdf', disposition: 'inline', filename: 'document.pdf'
J'ai remarqué sur Heroku que l'application semble utiliser de plus en plus de mémoire avec chaque document qui est créé et envoyé. J'ai confirmé cela sur ma machine locale avec quelques tests grossiers. Maintenant, j'ai placé GC.start
après le send_data
appel et le problème semble être résolu. La mémoire revient toujours à un niveau stable.
Mes questions sont les suivantes : est-ce que send_data
de faire quelque chose pour que l'objet reste en place longtemps ? Et le ramasseur d'ordures n'est-il pas censé fonctionner "tout seul" de temps en temps ? Heroku montre une augmentation constante de la mémoire. Merci.