Ich versuche, eine Harke Aufgabe zu nennen, wie so eine E-Mail an eine Liste von Teilnehmern aus einer Controller-Aktion zu senden:Passing Argumente Aufgabe von Modell rechen nicht funktioniert
Controller-Aktion:
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
Und hier ist die 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
Die Weiterleitung erfolgt und ich werde ohne Fehler zu dieser Seite weitergeleitet, es werden jedoch keine E-Mails gesendet. Daher habe ich keine Ahnung, warum das nicht funktioniert.
Irgendwelche Ideen?
Vielen Dank für den Hinweis. Selbst wenn ich ein Array an den Aufruf übergebe, scheint der Code in der Aufgabe immer noch nicht ausgeführt zu werden. – MarkD
Wenn jemand dies liest, habe ich die obige Lösung aufgegeben und sidekiq integriert, um dies als Hintergrundjob anstelle einer Rake-Aufgabe auszuführen. – MarkD