Ответ содержится в сообщении об ошибке, которое вы разместили:
/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 поможет разобраться в рекомендуемых изменениях.