Métodos de fábrica em Ruby

Qual é a maneira mais esperta, mais parecida com Ruby, de ter um único construtor retornando um objeto do tipo apropriado?

Para ser mais específico, aqui está um exemplo fictício: digamos que eu tenha duas classesBike eCar qual subclasseVehicle. Eu quero isso:

Vehicle.new('mountain bike')  # returns Bike.new('mountain bike')
Vehicle.new('ferrari')        # returns Car.new('ferrari')

Eu propus uma solução abaixo, mas ela usaallocate o que parece muito pesado para implementação. Quais são algumas outras abordagens, ou a minha é realmente ok?