Rails 4.1.6 Mailers Hanging

时间:2014-09-16 17:47:56

标签: ruby-on-rails actionmailer hang ruby-on-rails-4.1

我刚刚使用ruby 2.1.2升级到rails 4.1.6。我的邮件工作者都没有工作,他们都在渲染模板之前或期间都悬挂着。如果我降级到4.1.5邮件工作完美。从控制台如果我使用control-c突破了挂起,这是(重要部分)堆栈:

f = FooMailer.invite(FitnessClass.first, User.first, User.last)
FooMailer#invite: processed outbound mail in 94063.9ms
IRB::Abort: abort then interrupt!
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.6.1/lib/mail/field_list.rb:22:in `call'
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.6.1/lib/mail/field_list.rb:22:in `+'
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.6.1/lib/mail/field_list.rb:22:in `+'
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.6.1/lib/mail/field_list.rb:22:in `<<'
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.6.1/lib/mail/header.rb:178:in `[]='
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/mail-2.6.1/lib/mail/message.rb:1309:in `[]='
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionmailer-4.1.6/lib/action_mailer/base.rb:786:in `block in mail'
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionmailer-4.1.6/lib/action_mailer/base.rb:786:in `each'
from /Users/derrek/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionmailer-4.1.6/lib/action_mailer/base.rb:786:in `mail'
from /Users/derrek/git/foo/foo/app/mailers/foo_mailer.rb:18:in `invite'

2 个答案:

答案 0 :(得分:3)

是的 - 这是Mail gem中的一个无限循环。这已由this commit修复,并且在版本2.6.2中可以正常使用。在那之前:

gem 'mail', github: "mikel/mail"

答案 1 :(得分:0)

我发现问题出在Mail gem中。如果我降级到2.5.4,一切都会再次运作。我没有准确追踪到底发生了什么,但是在2.6.1版中,代码陷入了无限循环。我会说这更像是一个圆而非修复的工作,但它比被卡住更好。

gem 'mail', '2.5.4'