У меня есть действие контроллера, которое генерирует много отчетов Excel, это занимает приблизительно 10 минут, чтобы сделать. Иногда я называю его от своего веб-приложения, которое является, почему это - действие.
Но я также хочу создать задачу граблей выполнить это, таким образом, я могу запланировать ее для автоматического выполнения однажды ночь.
Какой-либо способ сделать это?
Я думаю, вам придется перенести свой код в свою модель. Поскольку плохо вкладывать знания о рендеринге вывода в модели, я бы предложил поместить всю бизнес-логику и манипуляции с данными в модель, но затем поместить код рендеринга в вашу задачу rake. Это сделало бы задачу рейка аналогичной контроллеру, используемому в сети, - поддерживая разделение задач.
Вы можете посмотреть ActionView :: Base и поработать оттуда, чтобы выяснить, как запускать рендеринг шаблонов.
Можете ли вы управлять генерацией отчетов из ваших моделей? Модели в любом случае должны выполнять большую часть работы, и к ним можно получить доступ из задач Rake:
task :reports => :environment do
...
# Do stuff with your models.
end