Oi Felipe, eu pesquisei aqui e vi que tem um método que faz isso, da string pro hash, deu certo. Testa aí:
require 'uri'
require 'net/http'
veiculo = "21"
url = URI("http://fipeapi.appspot.com/api/1/carros/veiculo/#{veiculo}/001267-0/2013-1.json")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
#request["authorization"] = 'Basic c2FuZGJveEBwcm9jb2IuY29tOlRlc3RlQXBp'
response = http.request(request)
# puts response.read_body
carro = response.read_body
puts carro.class
puts carro
carro = eval(response.read_body)
puts carro.class
puts carro
puts carro[:name]
O nome do método é eval();
A saída do código ficou
String
{"referencia": "outubro de 2018", "fipe_codigo": "001267-0", "name": "Palio 1.0 ECONOMY Fire Flex 8V 4p", "combustivel": "Gasolina", "marca": "Fiat", "ano_modelo": "2013", "preco": "R$ 22.533,00", "key": "palio-2013", "time": 0.0, "id": "2013"}
Hash
{:referencia=>"outubro de 2018", :fipe_codigo=>"001267-0", :name=>"Palio 1.0 ECONOMY Fire Flex 8V 4p", :combustivel=>"Gasolina", :marca=>"Fiat", :ano_modelo=>"2013", :preco=>"R$ 22.533,00", :key=>"palio-2013", :time=>0.0, :id=>"2013"}
Palio 1.0 ECONOMY Fire Flex 8V 4p