Создание большого файла xlsx с гемом axlsx_rails с использованием delayed_job
У меня есть приложение rails и несколько огромных файлов xlsx для генерации, и, хотя axlsx_rails очень хорошо работает при генерации этих файлов, когда число строк превышает 60000, существует долгое время ожидания, пока не появится окно загрузки.
Мне предложили использовать delayed_job. Как новичок, я едва понимаю, как delayed_job работает "обычным" образом, когда у вас есть метод для вызова `.delay`, но в этом случае гем выполняет всю работу, так как я могу поставить его на отложенную работу?? или, другими словами, что я должен называть `.delay`?
Вся моя реализация axlsx_rails была сделана как в следующем уроке: https://www.sitepoint.com/generate-excel-spreadsheets-rails-axlsx-gem/
1 ответ
Вероятно, они хотели использовать ActiveJob. Вы можете найти документацию для этого здесь:
http://edgeguides.rubyonrails.org/active_job_basics.html
Если вы используете Rails 5.x, вы можете использовать асинхронный адаптер очереди, поместив его в файл конфигурации application.rb:
config.active_job.queue_adapter = :async
Если вы используете Rails 4.x, вам нужно будет использовать задание для выполнения асинхронных задач, таких как sidekiq:
https://github.com/mperham/sidekiq/wiki/Active-Job
Sidekiq также потребует от вас установить Redis для хранения заданий:
https://github.com/mperham/sidekiq/wiki/Using-Redis
Вот руководство по сборке и настройке Redis:
https://redis.io/topics/quickstart
Интересующий вас раздел - "Установка Redis более правильно", хотя вы можете обойти большую часть этой ручной работы, следуя инструкциям на их странице загрузки здесь:
После того, как вы запустите make, в папке utils есть скрипт установки, который вы можете просто запустить, и он выполнит все настройки в руководстве по быстрому старту за исключением копирования исполняемого файла в каталог / usr / local / bin.