Я пытаюсь вызвать задачу грабель, чтобы отправить по электронной почте список абонентов от действия контроллера так: действиеаргументов Попутных разгребать задачи из модели не работает
Контроллера:
def send_digest
@article_ids = params[:article_ids]
@subject = params[:subject]
EmailDigest.send_email_digest("weekly_digest_task", @article_ids, @subject)
redirect_to new_digests_path
end
email_digest.rb:
require 'rake'
class EmailDigest < ActiveRecord::Base
def self.send_email_digest(weekly_digest_task, article_ids, subject)
load File.join(Rails.root, 'lib', 'tasks', 'send_email_digest.rake')
Rake::Task['weekly_digest_task'].invoke("\\\"#{article_ids}\\\"","\\\"#{subject}\\\"")
end
end
А вот send_email_digest.rake:
task :weekly_digest_task, [:article_ids,:subject] => :environment do |task, args|
articles = args.article_ids
subject = args.subject
article_objects = []
articles.each do |m|
article_objects << Article.find_by_id(m)
end
EmailDigest.all.each do |subscriber|
DigestMailer.weekly_digest(subscriber, article_objects, subject).deliver
end
end
Переадресация происходит, и я попал на эту страницу без ошибок, однако никакие электронные письма не отправляются. Таким образом, я понятия не имею, почему это не работает.
Любые идеи?
Благодарим вас за консультацию. Даже когда я передаю массив в вызове, кажется, что код в задаче все еще не запущен. – MarkD
Если кто-нибудь читает это, я отказался от вышеуказанного решения и интегрировал sidekiq, чтобы запустить это как фоновое задание вместо задачи грабли. – MarkD