How to include ActionMailer class in rake task?

actionmailer, rake-task, ruby, ruby-on-rails

Solution

I have the following and it is working:

# in lib/tasks/mailme.rake
task :mailme => :environment do
  UserMailer.test_email(1).deliver
end

And

# in app/mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
  def test_email(user_id)
    @user = User.find_by_id user_id

    if (@user)
      to = @user.email

      mail(:to => to, :subject => "test email", :from => "default_sender@foo.bar") do |format|
        format.text(:content_type => "text/plain", :charset => "UTF-8", :content_transfer_encoding => "7bit")
      end
    end
  end
end

Problem

I want to use ActionMailer in my rake task in order to send emails to people at a particular time. I have written a mailer class in app/mailers folder like this: ``` class AlertsMailer < ActionMailer::Base default from: 'x@y.com' def mail_alert(email_addresses, subject, url) @url = '#{url}' mail(to: email_addresses, subject: 'Alert') do |format| format.html { render '/alerts/list' } end end end ``` Then I included the following line in my rake task: ``` AlertsMailer.mail_alert(email_addresses, subject) ``` When I try to run the rake task: ``` rake update_db ``` I get the following error: ``` uninitialized constant AlertsMailer ``` I think I have to somehow load the mailer class in my rake task, but I don't have any idea how to do that. Please help.

Original source