para duas matrizes A e B: A e B têm o mesmo conteúdo se:
(A-B).blank? and (B-A).blank?
ou você pode apenas verificar:
((A-B) + (B-A)).blank?
Também como sugerido por @ cort3z, esta solução também funciona para matrizes polimórficas, ou seja
A = [1 , "string", [1,2,3]]
B = [[1,2,3] , "string", 1]
(A-B).blank? and (B-A).blank? => true
# while A.uniq.sort == B.uniq.sort will throw error `ArgumentError: comparison of Fixnum with String failed`
::::::::::: EDITAR ::::::::::::::
Como sugerido nos comentários, a solução acima falha para duplicatas. Embora de acordo com a pergunta que nem mesmo seja necessária, uma vez que o solicitante não está interessado em duplicatas (ele está convertendo suas matrizes para definir antes de verificar e isso mascara as duplicatas e mesmo se você olhar para a resposta aceita, ele está usando um operador .uniq antes de verificar e isso também mascara as duplicatas). Mesmo assim, se você tiver interesse em duplicatas, basta adicionar uma verificação de contagem para corrigir o mesmo (de acordo com a pergunta, apenas um array pode conter duplicatas). Portanto, a solução final será:
A.size == B.size and ((A-B) + (B-A)).blank?