Métodos de fábrica en Ruby.

¿Cuál es la forma más ingeniosa y parecida a Ruby de que un solo constructor devuelva un objeto del tipo apropiado?

Para ser más específico, aquí hay un ejemplo ficticio: digamos que tengo dos clasesBike yCar cual subclaseVehicle. Quiero esto:

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

He propuesto una solución a continuación, pero utilizaallocate lo que parece demasiado pesado de implementación. ¿Cuáles son algunos otros enfoques, o el mío está realmente bien?