Variable local no definida para hash en método ruby

por alguna razón me estoy poniendo

NameError: undefined local variable or method `states' for main:Object

aunque los estados están claramente definidos. ¿Que esta pasando aqui?

En irb agregué estados y accedí bien usando estados [: CA] pero cuando lo puse en un método obtuve ese error.

states = {
  CA: 'California',
  FL: 'Florida',
  MI: 'Michigan',
  NY: 'New York',
  OR: 'Oregon',
}

states[:CO] = 'Colorado'
states[:HI] = 'Hawaii'

cities = {
  CA: ['Alameda', 'Apple Valley', 'Exeter'],
  FL: ['Exeter', 'Amelia Island', 'Bunnell'],
  MI: ['Ann Arbor', 'East China', 'Elberta'],
  NY: ['Angelica', 'Apalachin', 'Canadice'],
  OR: ['Amity', 'Boring', 'Camas Valley'],
  CO: ['Blanca', 'Crestone', 'Dillon', 'Fairplay'],
  HI: ['Kailua', 'Hoopili', 'Honolulu'],
}

def describe_state state
  puts state
  description = "#{state.to_s} is for #{states[state]}."
  description << " It has #{citites[state].length} major cities:"
  cities[state].each do |x| ' ' << description end
end

puts describe_state :CA

Respuestas a la pregunta(1)

Su respuesta a la pregunta