尝试扩展(太棒了)(mail gem),但遇到了问题。
邮件可以这样使用:
- Mail.all
- Mail.first
- 邮件.全部删除()
我想把它扩展为:move_all()我看了一下source code,似乎是扩展IMAP〈Retriever类的合适位置,所以它就在旁边;delete_all()。代码也几乎相同。
但我做错了什么,我可以让它工作,这里是consise版本,我想得到工作:
#!/usr/bin/ruby
require 'net/imap'
require 'mail' #https://github.com/mikel/mail
module Mail
class IMAP < Retriever
require 'net/imap' unless defined?(Net::IMAP)
# Move all emails from an IMAP mailbox to another IMAP mailbox within the same account
def move_all(mailbox='INBOX', target='')
puts "How dow we get this to show?"
end
end
end
Mail.defaults do
retriever_method :imap, :address => MAIL_SERVER,
:port => 993,
:user_name => USERNAME,
:password => PASSWORD,
:enable_ssl => true
end
# WHY doesn't this work:
#
Mail.move_all('INBOX', 'another_box')
# ^^^^^^^^^
# gives error: undefined method `move_all' for Mail:Module (NoMethodError)
# and does this works:
Mail.delete_all()
如你所见:Mail.delete_all()运行良好,但IMAP〈Retriever类上的扩展方法'move_all()'无法识别。
我试过的是:
- 删除“检索器”
- 用其他方式来称呼这个方法
- 邮件.检索器.IMAP.全部移动
- 邮件::检索器.IMAP.移动_全部
- 等等各种各样的变化。但那是出于绝望。
我需要做什么才能让它工作?
谢谢你的时间和努力干杯
1条答案
按热度按时间rbl8hiat1#
方法
Mail.delete_all()
在www.example.com中定义https://github.com/mikel/mail/blob/10a4443b9d4ffa71b9ad643ad86cc23ccc99f0f3/lib/mail/mail.rb#L174。您需要在Mail
模块中创建类方法move_all
。