Rails 使用 ActiveJob 发邮件, 怎么使用当前的 Locale

48hour · 2015年05月25日 · 最后由 48hour 回复于 2015年05月26日 · 1846 次阅读

每个用户登录时,系统会根据 URL 设置 Locale, 之前使用 sidekiq 异步发送邮件,Sidekiq 可以保存当前的 Locale, 然后在实际发送时,使用保存的 Locale 发邮件。

现在升级到 Rails 4.2.1,系统默认使用 ActiveJob,activeJob 没有这样机制,我不想在把 Locale 作为参数传进去(修改的地方太多)

有没有什么好办法?

Sidekiq 保存当前的 Locale 是什么原理?用作 ActiveJob 的后端的时候失效了吗?

Sidekiq 是用一个类似插件的机制,处理了下,具体请参阅

https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/middleware/i18n.rb

https://github.com/rails/rails/blob/master/activejob/lib/active_job/queue_adapters/sidekiq_adapter.rb

ActiveJob 使用 Sidekiq 后端的时候,最终是塞进 Sidekiq::Worker 里面,我猜测这个扩展依然能用。

@rei , 没错,现在是 OK 的,之前是我遗漏了某个 Mailer 的本地化,误以为是升级 ActiveJob 的问题。

谢谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号