The following example code which comes from Inside Smalltalk vol. II, does not work properly because the MotherDuck initialization method is not run anew each time its code is modified.
The MotherDuck class>>initialize method is a class initialization method, meant to be run once to set up the class variables etc. needed by the rest of the code. The things that method sets up are not intended to be modified (or the modifications are very infrequent). There is no real automatic way to detect when changes would require that the class initialization code be run again; it's mainly a manual operation.
If you find that you are changing the class variables frequently, then you should consider changing them to instance variables that are set up whenever a new instance of that class is created.
(I must confess that I have no idea how the initialization methods gets launched).
That is set up automatically when you fileOut: your ChangeSet. If any of the MetaClasses defined in the ChangeSet contains a method named "initialize" then code to invoke it is added at the end of the fileOut so that when it is filed in, the initialization takes place. See ChangeSet>>FileOutPSFor:on: for details.
-- tim
squeak-dev@lists.squeakfoundation.org