Ошибка при отправке почты с gem pony на Ruby - PullRequest
0 голосов
/ 19 сентября 2018

При инициализации .rb я принимаю эту ошибку

/home/fucc/.rvm/gems/ruby-2.5.1/gems/pony-1.11/lib/pony.rb:250:in `block in build_mail': undefined method `body' for Pony:Module (NoMethodError)

Треска, когда я отправляю почту

def place
# Actually order
Pony.mail(:to => StoreApplication::Admin.email, 
            :from => "My store <mail@gmail.com>",
            :via => :smtp,
            :via_options => {
            adress:             'smtp.gmail.com',
            port:               '587',
            user_name:          'mail@gmail.com',
            password:           '###########',
            authentication:     :plain,
            domain:             "mail.google.com" },
            subject: "New order", body: "Check your admin page")
end

Ruby 2.5.1, Pony 1.12.Я делаю: - обновить все драгоценные камни;- установить заново гем Pony;- версия пони вверх и вниз

1 Ответ

0 голосов
/ 20 сентября 2018

Ответ содержится в сообщении об ошибке, которое вы разместили:

/home/fucc/.rvm/gems/ruby-2.5.1/gems/pony-1.11/lib/pony.rb:250:in `block in build_mail': undefined method `body' for Pony:Module (NoMethodError)

Это означает, что в исходном коде гема в файле lib/pony.rb в строке 250 предпринимается попытка вызвать метод Pony.body, но в модуле Pony нет метода body, поэтому возникает исключение.

В подобных случаях полезно посмотреть на источник в репозитории git длядрагоценный камень .Первое, что нужно отметить, это то, что последняя версия этого драгоценного камня - 1.12, а вы используете 1.11.Итак, что изменилось между 1.11 и 1.12 и могло ли это решить эту проблему?

Глядя на историю для lib/pony.rb Я вижу, что в ноябре 2017 года был зафиксирован коммит с именем ' FixNoMethodError, когда пони используется с почтой 2.7.0 '.Это изменение изменяет lib/pony.rb строку 250 и изменяет вызов метода для body.Это точная строка кода и вызова метода, который вызвал описанную вами ошибку.

Решение состоит в том, чтобы обновить вашу копию pony, например, с gem update pony или, если вы используете bundler, тогда bundle update.И если гем определен в Gemfile, убедитесь, что на нем нет ограничений по версии.

Я заметил, что вы сказали, что используете 1.12 и пытались откатить версию вперед и назад, но этоне точный.Вы используете 1.11, и вы можете сказать, потому что путь в вашем сообщении об ошибке gems/pony-1.11.Поэтому, как бы ни было настроено ваше приложение, оно настроено на использование 1.11.Если вы все еще не можете заставить ваше приложение использовать 1.12, тогда, пожалуйста, оставьте комментарий, объясняющий, как вы управляете гемами для своего приложения.

Наконец, я рекомендую вам переформатировать код, чтобы сделать его немного более читабельным:

def place
  Pony.mail(
    to: StoreApplication::Admin.email,
    from: 'My store <mail@gmail.com>',
    via: :smtp,
    via_options: {
      address: 'smtp.gmail.com',
      port: '587',
      user_name: 'mail@gmail.com',
      password: '###########',
      authentication: :plain,
      domain: 'mail.google.com'
    },
    subject: 'New order',
    body: 'Check your admin page'
  )
end

Внесены следующие изменения:

  • Заменить двойные кавычки на одинарные (одинарные кавычки, кроме случаев, когда используется интерполяция строк)
  • Исправить отступ (два пробела)
  • Исправить ключи хеша (не используйте :key => value, используйте key: value)
  • Исправьте орфографию на adress до address
  • Удалите лишние пробелы
  • Правильно выровняйте блоки и крышки

Руководство по стилю Ruby поможет разобраться в рекомендуемых изменениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...