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

Надеюсь это поможет.

Другие вопросы по тегам