Ruby 在IronWorker中调试邮件传递

Ruby 在IronWorker中调试邮件传递,ruby,iron.io,Ruby,Iron.io,我正在尝试使用mailgem从铁匠任务发送电子邮件。在我的本地系统(OSX)上运行脚本,但在使用相同参数的IronWorker上运行时失败。我对IronWorker和mailgem是新手,所以我不知道从哪里开始调试。下面是错误消息的文本 /task/email.rb:5:in `block in <top (required)>': undefined method `[]' for nil:NilClass (NoMethodError) from /task/__gem

我正在尝试使用
mail
gem从铁匠任务发送电子邮件。在我的本地系统(OSX)上运行脚本,但在使用相同参数的IronWorker上运行时失败。我对IronWorker和
mail
gem是新手,所以我不知道从哪里开始调试。下面是错误消息的文本

/task/email.rb:5:in `block in <top (required)>': undefined method `[]' for nil:NilClass (NoMethodError)     
from /task/__gems__/gems/mail-2.4.4/lib/mail/mail.rb:106:in `instance_eval'     
from /task/__gems__/gems/mail-2.4.4/lib/mail/mail.rb:106:in `defaults'  
from /task/email.rb:3:in `<top (required)>'     
from /usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'  
from /usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'  
from __runner__.rb:213:in `<main>'
/task/email.rb:5:in'block-in':nil:NilClass(NoMethodError)的未定义方法“[]”
from/task/__gems\u_/gems/mail-2.4.4/lib/mail/mail.rb:106:在'instance\u eval'中
from/task/____;gems/gems/mail-2.4.4/lib/mail/mail.rb:106:in'defaults'
from/task/email.rb:3:in`'
from/usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in'require'
from/usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in'require'
来自uuu runner.rb:213:in`'
这是我的代码:

require 'mail'

Mail.defaults do
  delivery_method :smtp, {
    address: params['address'],
    port: 587,
    domain: params['domain'],
    user_name: params['username'],
    password: params['password'],
    authentication: 'plain',
    enable_starttls_auto: true
  }
end

Mail.deliver do
  to "#{params['to_name']} <#{params['to_address']}>"
  from "#{params['from_name']} <#{params['from_address']}>"
  subject "Mail test"
  text_part do
    body params['text']
  end
  html_part do
    content_type 'text/html; charset=UTF-8'
    body params['html']
  end
end
需要“邮件”
Mail.do
传递方式:smtp{
地址:params['address'],
港口:587,
域:参数['domain'],
用户名:params['username'],
密码:params['password'],
身份验证:“普通”,
启用\u starttls\u自动:真
}
结束
邮递
到“#{params['to_name']}”
来自“#{params['from_name']}”
主题“邮件测试”
文字部分做什么
正文参数['text']
结束
你是做什么的
内容类型为“文本/html”;字符集=UTF-8'
正文参数['html']
结束
结束

请注意,我以前在本地遇到过此错误,但这是由于在默认设置中使用了
username
,而不是
user\u name
。有什么想法吗?

我不确定,但看起来“params”是零,你能在使用前检查一下吗。如果您在worker单独的名称空间中使用(如类中的worker body)可能会发生这种情况。

Hey Eric-在构建参数的地方共享代码,然后将worker排队,这将有助于您的工作。似乎params是nil,如下所述。params不是nil。我以前有一个登录语句,可以提取所有参数。这是邮件的
默认方法。我还没有任何代码来构造参数。我只是在命令行上执行
iron_worker queue email-p{…}
。如果有帮助的话,我稍后会发布我的json。@EricaAndres你能解决这个问题吗?你的参数输出会有帮助。请参阅我对上面@Chad的回复。Params不是零。