2013-07-16 3 views
0

Для моего приложения Rails у меня есть контроллер, который генерирует однократное временное изображение, которое необходимо загрузить для соответствующего представления. В настоящее время я использую Tempfile для этого, но проблема в том, что файл иногда собирает мусор, прежде чем представление имеет возможность загрузить его.Rails: экземпляры временного файла, собранные до просмотра загруженного

Я рассмотрел использование файла с драгоценным камнем Maid или заданием cron для периодической очистки изображений, но предпочел бы более чистое решение.

Например, существует встроенная функция обратного вызова загрузки страницы в Rails, которая позволила бы мне вызвать вспомогательный метод после того, как представление закончит рендеринг?

ответ

0

В конце концов, я решил кодировать мое изображение в base64 и вставлять его в представлении.

1

Вы можете использовать after_filter с в контроллере, чтобы сделать какой-либо очистки:

class YourController < ApplicationController 
    after_filter :cleanup 

    private 

    def cleanup 
    # clean it up 
    end 
end 
+0

Проблема с 'after_filter' заключается в том, что она все равно будет вызываться до того, как будет отображаться представление. Очистка с помощью 'after_filter' фактически заставляет изображение удаляться до того, как у просмотра появится возможность его получить. – Jonathan

+0

Хм. Как насчет delayed_job? – DiegoSalazar

+0

'delayed_job' чувствует себя немного излишним, так как для его собственной таблицы базы данных требуется просто отложить выполнение кода очистки на несколько минут. – Jonathan

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