追溯Ruby-Gmail-Gem方法的起源

追溯Ruby-Gmail-Gem方法的起源,ruby,gem,gmail,mime,Ruby,Gem,Gmail,Mime,我的目标是找到在本自述示例中调用save_attachments_to的位置: folder = "/where/ever" gmail.mailbox("Faxes").emails do |email| if !email.message.attachments.empty? email.message.save_attachments_to(folder) end end 我在循环中运行“放置email.message.attachments.methods”和“emai

我的目标是找到在本自述示例中调用save_attachments_to的位置:

folder = "/where/ever"
gmail.mailbox("Faxes").emails do |email|
  if !email.message.attachments.empty?
    email.message.save_attachments_to(folder)
  end
end
我在循环中运行“放置email.message.attachments.methods”和“email.message.attachments.class”:

Mail::AttachmentsList
guess_encoding
set_mime_type
inspect
然后我运行了一个“puts email.message.methods”和一个“puts email.message.class”作为良好的度量。示例方法调用不在列表中

所以我跳进了水里

那里也没有定义方法,但我注意到mime/message已经定义,所以我去那里看看它的方法:

这里也没有save_attachments_to方法


这种方法究竟是什么鬼东西?gmail gem没有定义附件方法,所以整个东西必须从某处继承。哪里继承它的电话在哪里

你找不到它的原因是它不存在。我不知道为什么。我下载了gem并在
irb
中玩了一会儿:

1.9.3-p194 :066 > x.message.attachments
 => [#<Mail::Part:70234804200840, Multipart: false, Headers: <Content-Type: application/vnd.ms-excel; name="MVBINGO.xls">, <Content-Transfer-Encoding: base64>, <Content-Disposition: attachment; filename="MVBINGO.xls">, <Content-Description: MVBINGO.xls>>] 
1.9.3-p194 :063 > x.message.save_attachments_to(folder)
NoMethodError: undefined method `save_attachments_to' for #<Mail::Message:0x007fc1a3875818>
    from /Users/Qsario/.rvm/gems/ruby-1.9.3-p194/gems/mail-2.4.4/lib/mail/message.rb:1289:in `method_missing'
    from (irb):63
    from /Users/Qsario/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'
但是当所讨论的方法不存在时,这对你没有多大帮助。编辑:现在我看,这个确切的错误已经在他们的网站上了。一些人发布代码来实现不存在的功能,例如A-b的代码:

folder=Dir.pwd#例如
email.message.attachments.each do|f|
File.write(File.join(文件夹,f.filename),f.body.decoded)
结束

找不到它的原因是它不存在。我不知道为什么。我下载了gem并在
irb
中玩了一会儿:

1.9.3-p194 :066 > x.message.attachments
 => [#<Mail::Part:70234804200840, Multipart: false, Headers: <Content-Type: application/vnd.ms-excel; name="MVBINGO.xls">, <Content-Transfer-Encoding: base64>, <Content-Disposition: attachment; filename="MVBINGO.xls">, <Content-Description: MVBINGO.xls>>] 
1.9.3-p194 :063 > x.message.save_attachments_to(folder)
NoMethodError: undefined method `save_attachments_to' for #<Mail::Message:0x007fc1a3875818>
    from /Users/Qsario/.rvm/gems/ruby-1.9.3-p194/gems/mail-2.4.4/lib/mail/message.rb:1289:in `method_missing'
    from (irb):63
    from /Users/Qsario/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'
但是当所讨论的方法不存在时,这对你没有多大帮助。编辑:现在我看,这个确切的错误已经在他们的网站上了。一些人发布代码来实现不存在的功能,例如A-b的代码:

folder=Dir.pwd#例如
email.message.attachments.each do|f|
File.write(File.join(文件夹,f.filename),f.body.decoded)
结束

感谢您的健康检查Qsario.:-)

以下是Ruby 1.9.3(1.9.3-p194)中的代码:

以下是1.9.2(1.9.2-p320)和1.9.3(1.9.3-p194)中的代码:


感谢您的健康检查(Qsario.:-)

以下是Ruby 1.9.3(1.9.3-p194)中的代码:

以下是1.9.2(1.9.2-p320)和1.9.3(1.9.3-p194)中的代码:

是的,我很快就从“哦,那很容易”变成了“WTF,这个文档是个谎言”。然后我决定去报告错误并且。。。哦,它就在问题追踪器上,有解决办法。他们的示例中包含了类似的内容,这仍然是一个相当大的WTF。有人在维护它吗?是的,我很快就从“哦,那很容易”变成了“WTF,这个文档是个谎言”。然后我决定去报告错误并且。。。哦,它就在问题追踪器上,有解决办法。他们的示例中包含了类似的内容,这仍然是一个相当大的WTF。有人在维护它吗?
gmail = Gmail.connect('username@gmail.com', 'pass') 
gmail.inbox.emails.each do |email|
  email.message.attachments.each do |f|
    File.write(File.join(local_path, f.filename), f.body.decoded)
  end
end
gmail = Gmail.connect('username@gmail.com', 'pass') 
gmail.inbox.emails.each do |email|
  email.message.attachments.each do |file|
    File.open(File.join(local_path, "name-of-file.doc or use file.filename"), "w+b", 0644 ) { |f| f.write file.body.decoded }
  end
end