On Sat, May 19, 2012 at 11:30 PM, Dale Henrichs <[email protected]> wrote:
> Okay, > > Are you loading all of the classes (for all packages) before you run the > initializers? ... I'm pretty sure that some of the initializations need to > be run before subclasses are _loaded_. > > Next, you should try to force your initialization order to match that of > Metacello, if that doesn't help then something else is the root cause of > your problems... > > heheheheh I should stop sending crap emails to the mailing list. Once again, sorry for the noise. I was a problem in my own code. A default flag has the incorrect value and I was initializing twice...once after each packages and then once they all finished... anyway, now it works :) Thanks Dale for your patient > Dale > > ----- Original Message ----- > | From: "Mariano Martinez Peck" <[email protected]> > | To: [email protected] > | Sent: Saturday, May 19, 2012 2:20:14 PM > | Subject: Re: [Pharo-project] Order of sending class side #initialize > | > | > | > | > | 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 > | > | > > -- Mariano http://marianopeck.wordpress.com
