【发布时间】:2012-03-20 14:50:30
【问题描述】:
这里是鲁努比。我有一个类Login 使用net/IMAP 库登录到gmail。发生的事情是我创建了该类的一个新实例,例如:
a = Login.new("username", "gmail.com", "passw")
然后,我正在研究其他可以对邮箱做一些“事情”的课程。问题是我在 Login 中定义的 @imap 变量似乎已经消失(由于我假设的范围)。
这就是@imap 在 Login 类中的声明方式:
@imap = Net::IMAP.new('imap.gmail.com',993,true,nil,false)
所以:
@today = Date.today
@received_today = imap.search(["SINCE", @today.strftime("%d-%b-%Y")]).count.to_s
...返回错误。这是我在玩这个时遇到的两个错误。第一个是我使用imap的时候,第二个是我尝试@imap的时候:
NameError: undefined local variable or method `imap' for #<Object:0x10718d2a8>
NoMethodError: undefined method `search' for nil:NilClass
处理此类情况的最佳做法是什么?是在创建 Net::IMAP 的新实例的同一类中定义我的方法的唯一解决方案吗?将@imap 声明为全局变量$imap 是一种不好的做法吗?如此困惑,我敢打赌答案也非常简单明了,但我只是没有看到。谢谢!
【问题讨论】: