Ruby grep - recherche dans un tableau pour une partie de la chaîne

Je suis nouveau sur le Rubis et un peu confus par la commande grep dans ce bloc de code. Je suis en train de rassembler tous les noms de boîtes aux lettres via le Net::IMAP, puis de les comparer à celles d'une boîte aux lettres argument. Probablement le nom de boîte aux lettres sera seulement une partie de l'argument. Par exemple, quelqu'un peut-type dans "Envoyé", comme la boîte aux lettres, mais de nombreuses fois le nom de boîte aux lettres sera "de la BOÎTE de réception.Envoyé."

   class ExamineMail
        def initialize(user, domain, pass, box)
           @username = user
           @domain = domain
           @pass = pass
           @mailbox = box 
        end

         def login()
            @imap = Net::IMAP.new("mail." + @domain)
            @imap.authenticate('LOGIN', @username + "@" + @domain, @pass)
            mailbox_array = @imap.list('','*').collect{ |mailbox| mailbox.name }
            #mailbox_array.any? { |w| @mailbox =~ /#{w}/}
            mailbox_array.grep(/^@mailbox/)
         end
   end

Donc, j'ai d'abord essayé .tout? mais cela ne veut pas me rendre le nom de la boîte aux lettres réelle. Avec .grep, je suis en mesure d'obtenir une liste des boîtes aux lettres quand @mailbox = "INBOX". Toutefois, lorsque @mailbox = "Sent" elle retourne [].

Voici un exemple de quelqu'un qui travaille (à l'aide de la "BOÎTE de réception") et celui qui n'a pas (à l'aide d'un "Envoyé"):

#Get the list of inboxes
mailbox_array = imap.list('','*').collect{ |mailbox| mailbox.name }
=> ["INBOX", "INBOX.Trash", "INBOX.Sent", "INBOX.Sent Messages", "INBOX.Junk", "INBOX.Drafts", "INBOX.Deleted Messages", "INBOX.Apple Mail To Do"]

#Search for mailboxes including "Sent"
>> mailbox_array.grep(/^Sent/)
=> []

#Search for "INBOX"
>>             mailbox_array.grep(/^INBOX/)
=> ["INBOX", "INBOX.Trash", "INBOX.Sent", "INBOX.Sent Messages", "INBOX.Junk", "INBOX.Drafts", "INBOX.Deleted Messages", "INBOX.Apple Mail To Do"]

Je pense que le problème est que la "BOÎTE de réception" est au début des chaînes dans le tableau, mais "Envoyé" est dans le milieu et est issue d'une période. Vous ne savez pas comment résoudre.

InformationsquelleAutor krapdagn | 2012-02-28