in Deck.give_card you are returning cards_sent via pop with an argument. This returns an array. So the dealer and player hands will be an array of arrays of cards. (pop without an argument returns a single item.)
From your error:
undefined method `show_card' for [# ]:Array
You can change:
@dealer.hand << @deck.give_card
@player.hand << @deck.give_card
@dealer.hand << @deck.give_card
@player.hand << @deck.give_card
to:
@dealer.hand += @deck.give_card
@player.hand += @deck.give_card
@dealer.hand += @deck.give_card
@player.hand += @deck.give_card
Or rename your give_card to give_cards and add a new give_card:
def give_card
@cards.pop
end