gpt4 book ai didi

ruby-on-rails - Heroku上的Rails ActionMailer拦截器

转载 作者:行者123 更新时间:2023-12-03 16:19:46 27 4
gpt4 key购买 nike

我尝试在Rails应用程序中注册一些ActionMailer拦截器。
例如,在我的/config/initializers/mailer.rb

if Rails.env.staging?
class PrefixStagingMailSubject
def self.delivering_email(mail)
mail.subject = "TEST #{mail.subject}"
end
end
ActionMailer::Base.register_interceptor(PrefixStagingMailSubject)
end


这在我的开发人员机器上正常工作。但是它不在Heroku服务器上。

有时我发现它可以在Devise发送的邮件中使用(例如,重置密码邮件)。这意味着拦截器虽然已被注册。

但是在我的邮件中,它仍然不起作用。例如我的 ReportsMailer

class ReportsMailer < ActionMailer::Base
def report_email(email, title, public_url)
subject = "The #{title} report you've requested was generated"
body = <<-EOS
The #{title} report you've requested was generated
You can download it by clicking the link below:

------------
#{public_url}
EOS

mail(to: email, subject: subject, body: body)
end
end


有什么问题吗?

有人可以帮我吗?
谢谢。

最佳答案

所以我觉得很傻。
消息发送由Sidekiq处理。
但是我完全忘记了Sidekiq有自己的ENV
我有以下代码的config/initializers/mailer.rb

if Rails.env.staging?
class PrefixStagingMailSubject
def self.delivering_email(mail)
mail.subject = "TEST #{mail.subject}"
end
end
ActionMailer::Base.register_interceptor(PrefixStagingMailSubject)
end


所以我认为问题是Sidekiq在运行时未指定
ENV并具有一些默认的 ENV(可能是开发中的)。

我更新了我的Procfile文件

web: ...
worker: bundle exec sidekiq -e $SIDEKIQ_ENV ...


并在Heroku配置中设置 SIDEKIQ_ENV = staging

现在一切似乎都正常。

关于ruby-on-rails - Heroku上的Rails ActionMailer拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com