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...

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
| 
| 

Reply via email to