ruby deliver_now Gem邮件的方法产生错误的参数数量错误

bogh5gae  于 2023-10-17  发布在  Ruby
关注(0)|答案(1)|浏览(92)

我在升级我的Rails项目的Ruby版本时遇到了一点麻烦。项目运行在Rails 6.1.7上,我已经将Ruby版本升级到3.2.2。然而,我的测试表明Gem mail(版本2.8.1)的deliver_now方法存在问题。
下面的调用产生以下错误:

Call: TestMailer.test_mail(one: foo, two: bar).deliver_now
Error: wrong number of arguments (given 1, expected 0; required keywords: one, two) (ArgumentError)

对应的方法定义如下所示:

def test_mail(one:, two:)
    attach_files([one.last.pdf_path.to_s]) if two

    send_mail(one: one)
end

我有一个非常强烈的怀疑,问题是在版本2.8.1的宝石邮件。如果我将Gemfile中的版本修改为gem 'mail', '2.7.1',并将Ruby版本“仅”提高到3.0.4,那么整个事情都可以工作。

ie3xauqp

ie3xauqp1#

恐怕不是mail宝石。Rails 6.1.7与ruby 3.2不兼容-ruby 3.1中引入的关键字更改需要rails 7.0.1(甚至不是7.0.0)版本才能正常工作。这意味着你需要先升级Rails。

相关问题