title: Ruby - problems with nilClass
body: <p>I am having trouble getting this to work. The error I get is:</p>
  
  <blockquote>
    <p>114 in 'numberstash' : undefined method 'cards' for nil:Nilclass (No Method Error).</p>
  </blockquote>
  
  <p>It is for a Blackjack game. I spent several hours trying to fix this code, including making a bunch of test scripts to figure it out. However, I have had no luck. This works on my test script, however it doesn't work on the current script:</p>
  
  <pre><code>class Card
    attr_accessor :suit, :value
  
    def initialize(suit, value)
      @suit = suit
      @value = value
    end
  
    def to_s
      "#{value} of #{suit}"
    end
  end
  
  class Deck
    attr_accessor :cards
  
    def initialize(number_of_decks)
      @cards = []
      num = number_of_decks
      counter = 0
      while counter &lt; num
        ['H','C', 'S', 'D'].product(['2','3','4','5','6','7','8','9','10','J','K','Q','A']).each do |arr|
          @cards &lt;&lt; Card.new(arr[0], arr[1])
        end
        counter += 1
      end
    end
  end
  
  class Player
    attr_accessor :cards, :testvalue
  
    def initialize
      @cards = []
    end
  end
  
  class Dealer
    attr_accessor :cards
  
    @cards = []
  end
  
  class Blackjack
    attr_accessor :deck, :player, :dealer
  
    def calculate arr
      new = arr.map { |e| e[1] }
      sum = 0
      ace = 0
      new.each { |value|
        if value == 'A'
          sum += 1
          ace = 1
        elsif value.to_i == 0
          sum += 10
        else
          sum += value.to_i
        end
      }
      if ace = 1 &amp;&amp; sum + 10 &lt;= 21
        ace = 0
        sum = sum + 10
      end
    end
  
    def initialize
      deck = Deck.new(4)
      #@deck = @deck.shuffle
      player = Player.new()
      dealer = Dealer.new()
    end
  
    def dealcards
      #puts 'dealcards'
      #player.cards &lt;&lt; deck.cards.pop
      #dealer.cards &lt;&lt; deck.cards.pop
    end
  
    def start
      #dealcards
      #player_turn
      #dealer_turn
      #compare?
      #play again?
      numberstash
    end
  
    def numberstash
      #player.cards &lt;&lt; deck.cards.pop
      puts player.cards
      #dealer.cards &lt;&lt; deck.cards.pop
    end
  end
  
  game = Blackjack.new()
  game.start
  </code></pre>
  
  <p>My question is, why am I getting the above mentioned error?</p>