Search code examples
ruby-on-railsrubyruby-on-rails-plugins

Why doesn't Delayed Jobs work with my ActionMailer production setup?


I am working on a Ruby (1.8.6) on Rails (2.3.5) application in which I am currently using Gmail to deliver email messages. I want to switch to sending the messages with Delayed Jobs.

I have delayed jobs sending messages on my development environment but when I deploy to my production server and try the messages get rejected and an error shows up in my delayed_jobs table: 530 5.7.0 Must issue a STARTTLS command first. i25sm12946175anh.17. I've seen this error before (when I don't have TLS enabled in my config). But it was working before I started using delayed_jobs. Here is my mail config:

ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,
  :address => 'smtp.gmail.com',
  :port => 587,
  :domain => 'example.com',
  :authentication => :plain,
  :user_name => '[email protected]',
  :password => 'password'
}

Any help with this issue is greatly appreciated.

Update: The application is actually running on REE ruby 1.8.7. So maybe delayed jobs is somehow using the regular ruby interpreter installed on the server (1.8.6). But, how do I get delayed jobs to use my REE install? And how do I tell what things are using what version of Ruby.


Solution

  • But, how do I get delayed jobs to use my REE install? And how do I tell what things are using what version of Ruby.

    The script/delayed_job command uses the system Ruby. So "which ruby" should point to the REE installation. If not, you can force it by using the Ruby executable. Lets say, your REE is installed at /opt/ruby-enterprise-1.8.7-2010.01. Then:

    $ RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/ruby script/delayed_job -n 2 start
    

    Or if you use the rake command to start, like:

    $ rake jobs:work -t RAILS_ENV=production
    

    Then which rake should point to your REE installation. If its not, then you can make it use REE by:

    RAILS_ENV=production /opt/ruby-enterprise-1.8.7-2010.01/bin/rake jobs:work -t