2015-12-18 4 views
0

Я разрабатываю почтовый веб-приложение в Ruby On Rails, и я перед вопросом с delayed_job самоцветом:Rails 4: Задержки работы держать кэш для электронной почты «от» значения заголовка

В настройках моего приложения , Я даю возможность клиенту обновить адрес электронной почты, с которого отправляется рассылка. Но я обнаружил, что есть что-то вроде кэша от delayed_job, который не использует адрес электронной почты для обновления для заголовка «from».

Когда я использую задачу delayed_job от Capistrano вручную, это работает, поэтому я попытался добавить обратный вызов after_update в свою модель для обработки перезапуска delayed_job, но без каких-либо успехов. Команда

Capistrano:

cap <my_env> delayed_job:restart # this works but it’s a manual command so useless in my case 

То, что я пытался это динамически перезагружать delayed_job от модели:

class Setting < ActiveRecord::Base 
    after_save :restart_delayed_job 

    def restart_delayed_job 
    if email_changed? 
     system "RAILS_ENV=#{Rails.env} do bundle exec bin/delayed_job -n 1 restart" 
    end 
    end 
end 

Мой почтовый класс:

class MyMailer < ApplicationMailer 
    default from: Setting.first.email # After updating the email value in setting, it still the old one used. 
    # more code skipped 
end 

Кто-нибудь знает, как я могу перезапустить delayed_job из Rails?
Есть ли способ сделать это исключительно в Ruby без написания сценария оболочки?
Чтобы помочь мне лучше понять, существует ли несколько экземпляров delayed_job (по одному веб-сайту на сервере) или один для всего веб-сайта?

Благодарим за помощь!

Мой проект:
- Rails 4.2.5
- рубин 2.2.2
- ActiveAdmin 1.0.0 pre2
- Задержка работы 4.1.1
- Capistrano 3.4.0

ответ

0

Решением было переместить заголовок from в функцию mail. Причина, по умолчанию, устанавливается только один раз, когда приложение запускается и не может быть изменено таким образом.

mail(from: email, subject: subject, ...) do 
    # skipped code 
end 

Вот ответ, который помог мне понять, что: https://github.com/collectiveidea/delayed_job/issues/882

Смежные вопросы