Oui, c'est vrai, on utilise initialize nous dit Pouype, mais on peut tout à fait bidouiller avant de créer une instance en tournant autour de "new", voici le code:

 1 class Truc
 2   class << self #construction magique pour que "self" devienne la classe Truc qu'on est en train de créer, car alias marche sur les méthodes d'instances
 3     alias :oldnew :new
 4   end
 5   
 6   attr_accessor :bidule
 7
 8   def Truc.new
 9    p "salut"
10    t = Truc.oldnew #l'instance est créée maintenant là tout de suite, pas avant pas après
11    t.bidule = :chose
12    t #si on ne retourne pas t, alors ce sera :chose qui sera retourné
13   end
14 end
15
16 p Truc.new.inspect

Pour le commentaire, je dirais que c'est juste une preuve du concept, la méthode la plus propre est de créer une méthode de classe du style Truc.new_avec_prout qui à son tour appellera Truc.new .

Pour ceux qui se demandent comment ça se fait qu'on puisse faire ça, c'est qu'il n'y a pas de magie dans Ruby, les concepts de classes/objets/instances ne font pas d'exception à la règle (à ma connaissance). C'est entre autre pour cette raison que Ruby est un peu lent, mais ça prouve qu'il est cohérent et reste un joujou trop génial.