¿Cómo puedo encontrar la cadena más larga en una matriz multidimensional?

Estoy tratando de obtener la cadena más larga de una matriz multidimensional, sin embargo, no funciona por alguna razón.

Esto es lo que tengo:

a = ["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"]] p a.max_by{|v|v}[0] # => "MTYSTAKEGAYPFRNFN" 

¿Podría alguien, por favor, hacerme saber lo que estoy haciendo mal?

 => a.flatten.max_by(&:size) => # "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS" 
 a = [ ["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"] ] p a.max_by { |v| v[0].size }[0] 

salida:

 "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS" 

Simplemente especificando v , las comparaciones se realizan con cada elemento (matriz de un solo elemento). Se comparan lexicográficamente.

Esto debería funcionar:

 a.max_by { |v| v.first.size }[0] 
 => a = [["MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"], ["MTYINLGVTRTGDLMIGRHRP"], ["MRIYNRVCFQTAGCYLQNLVTTSIQPARVWTY"], ["MAACGLGRVFSAFKVDEMD"], ["MPSGFVGKRSGFCQFCCSHI"], ["MTYSTAKEGAYPFRNFN"] ] => a.flatten.sort_by(&:length).last #=> "MAKKGKPRPDHRPPAHNPHYAHDPPPYSQQQPPLQQQNYAQQMHHGGGGGNRQHARPRPSPPSEVSDCVKYSLFLYNCIFWVSMHSS"