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