NoMethodError Ruby 1.9.3
Я использую Ruby 1.9.3 и получаю следующую ошибку в следующей строке при попытке использовать API SendGrid.
ОШИБКА [в этой строке ниже "mailer.mail(mail_defaults)
"]:
NoMethodError (undefined method `to_h' for #<Hash:0x00000005da0958>):
КОД:
при условии, что некоторые пользователи
recipients = []
recipient = SendGrid::Recipient.new('jn@geo.com')
recipient.add_substitution('name', 'Billy Bob')
recipient.add_substitution('number', 1234)
recipient.add_substitution('time', '10:30pm')
recipients << recipient
# then initialize a template
template = SendGrid::Template.new('blahblah7bef2-d25b00')
# create the client
# see client above
# set some defaults
mail_defaults = {
:from => 'no-reply@geo.com',
:html => '<h1>I like email tests</h1>',
:text => 'I like email tests',
:subject =>'Test Email is great',
}
mailer = SendGrid::TemplateMailer.new(client, template, recipients)
# then mail the whole thing at once
mailer.mail(mail_defaults)
Я подумал, что это может быть мой массив mail_defaults, поэтому я попробовал это (см. Ниже) и получил ту же ошибку в той же строке.
mail_defaults = {
from: 'no-reply@geo.com',
html: '<h1>I like email tests</h1>',
text: 'I like email tests',
subject: 'Test Email is great',
}
У меня есть ошибка в моем коде или это ошибка метода SendGrids mailer.mail?
1 ответ
Эта проблема с mail.mailer. Это использует метод to_h для внутреннего использования, который был реализован в Ruby 2.1. Фактически, sendgrid sdk теперь требует ruby 2.1. У меня была такая же проблема с Ruby 1.9.3, и я решил ее путем обновления до 2.1.
Это то, что я использовал для обновления до Ruby 2.1 на CentOS 6 (не в моей сути): https://gist.github.com/mustafaturan/8290150
Надеюсь это поможет.