ruby - 追溯 Ruby Gmail Gem 方法的源头

标签 ruby rubygems gmail mime

我的目标是在这个gmail gem中找到调用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

我在循环中运行了“puts email.message.attachments.methods 和 email.message.attachments.class”:

Mail::AttachmentsList
guess_encoding
set_mime_type
inspect

然后我运行一个“puts email.message.methods”和一个“puts email.message.class”作为很好的衡量标准。示例方法调用不在列表中。

所以我开始研究 https://github.com/nu7hatch/gmail/blob/master/lib/gmail/message.rb .

那里也没有定义任何方法,但我注意到定义了 mime/message,所以我去那里查看它的方法:http://rubydoc.info/gems/mime/0.1/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>'

帮助不大。通常,你可以做类似的事情

puts my_obj.method(:some_method_name).source_location

但是当所讨论的方法不存在时,这对您没有太大帮助。编辑:现在我看,这个确切的错误已经在他们的 issue tracker 上了。 .一些人已经发布了代码来实现不存在的功能,例如 a-b 的这段代码:

folder = Dir.pwd # for example
email.message.attachments.each do |f|
  File.write(File.join(folder, f.filename), f.body.decoded)
end

关于ruby - 追溯 Ruby Gmail Gem 方法的源头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814783/

相关文章:

heroku - 从 heroku gem 切换到 heroku-api topolbelt

macos - 您没有/Library/Ruby/Gems/2.3.0 目录的写权限。 (mac 用户)

html - HTML显示错误

gmail - 设置 MRA (fetchmail/getmail) 以通过 POP/IMAP 从 Gmail 中提取所有文件夹

node.js - Nodemailer 与 Gmail 发生环回错误 - 对象 #<Object> 没有方法 'getToken'

ruby-on-rails - 独立 ruby​​ 脚本的配置文件

ruby-on-rails - Rails 应用模型中的 ModelName.real

ruby - 临时修改(核心)Ruby 模块的库

ruby - 如何将数组作为参数列表传递

http 中的 Ruby 搜索获取请求响应正文