On Sat, May 19, 2012 at 9:01 PM, Dale Henrichs <[email protected]> wrote:
> Mariano, > > To shed some light on the exact problem, I think that you should record > the initialization order of a Metacello load and compare that to the > initialization order that you are using. > > While your algorithm looks like it is correct it doesn't necessarily match > the actual initialization order you get when using Monticello and > Metacello... > > It would be interesting to find out where the differences in order are and > then focus on understanding why... > Hi Dale. Well, I did that. I noticed 2 differences: 1) If the class already exist and the #initialize is the same, it is not re-executed. In my case, I execute it always. I know, this is a problem I have. Nevertheless, the only classes that already exist in the image I am loading is Zinc...and the problem does not seem related to that. 2) The order of the classes/methods inside a package is different. I mean, I load the packages in order, but inside, for each package, the order I send #initialize is not the same as Monticello. Example: My code: Initializing class: WAKeyGenerator class Initializing class: WAUrlEncoder class Initializing class: WAServerManager class Initializing class: WALocale class Initializing class: WAResponse class Initializing class: WAXmlEncoder class Initializing class: WASystemConfiguration class Initializing class: WASharedConfiguration class Initializing class: WAAbstractFileLibrary class Monticello: Initialize class: (Seaside-Core-Libraries) -- WAAbstractFileLibrary Initialize class: (Seaside-Core-Configuration) -- WASystemConfiguration Initialize class: (Seaside-Core-Configuration) -- WASharedConfiguration Initialize class: (Seaside-Core-Document) -- WAUrlEncoder Initialize class: (Seaside-Core-Document) -- WAXmlEncoder Initialize class: (Seaside-Core-Utilities) -- WAKeyGenerator Initialize class: (Seaside-Core-HTTP) -- WALocale Initialize class: (Seaside-Core-HTTP) -- WAResponse Initialize class: (Seaside-Core-Server) -- WAServerManager So...maybe this is the reason? what I am thinking now that maybe the problem is not in the initialization but instead of export? I mean, maybe Monticello exports methods/classes with certain order and that's why it works? because when exporting I am not using any order at all. Thanks > > Dale > > ----- Original Message ----- > | From: "Mariano Martinez Peck" <[email protected]> > | To: "Pharo Development" <[email protected]> > | Sent: Saturday, May 19, 2012 11:25:57 AM > | Subject: [Pharo-project] Order of sending class side #initialize > | > | Hi guys. I am doing some experiments with FuelPackageLoader and I > | have a problem with the initialization. All my unit tests pass but > | when trying to export/import seaside/pier/magritte, I have a > | problem. > | What I do basically, is to ask Metacello the list of packages that I > | need to loaded for seaside and friends. The list is IN ORDER OF > | LOADING. So what I do during the import is to load each package in > | the correct order (the one Metacello told me). For each package I > | load, I initialize its classes (at the end of the load of the > | package). The order I initialize classes for a package is: > | > | ((aPackage classes select: [:each | each isBehavior]) > | sort: [:a :b | a allSuperclasses size < b allSuperclasses size ]) > | do: [:aClass | > | Transcript show: 'Initializing class: ', aClass name; cr. > | aClass initializeOnLoad] > | > | and > | > | Class >> initializeOnLoad > | (self class includesSelector: #initialize) > | ifTrue: [self initialize] > | > | > | so...I am having a problem with seaside with a class and it looks > | like a problem of the order of the initialize. Do you think > | something is wrong with our approach? any idea? > | > | thanks in advance, > | > | -- > | Mariano > | http://marianopeck.wordpress.com > | > | > > -- Mariano http://marianopeck.wordpress.com
