I'm playing with packaging a simple Seaside demo with the idea of learning how to run it on Linux, where I have almost no experience. I'm starting out by packaging it for windows and as a windows NT service, where I do have some experience. I'm having a problem with running the windows image, which I'm sure is a packaging problem. I will get to that in a minute.
While looking around at the Seaside code, I find that there are some methods that use methods that are missing. I expect that this is due to the fact that Seaside comes from the Squeak/Pharo world and that those Smalltalks have methods that aren't in our Smalltalk.
I have a snippet of code that I use to check some of my apps to see if I have forgotten to write a method. The code below is it's core and checks one app. It can be wrapped with some code that feeds it app names and checks more than one app. It puts the results in a stream but that can be changed to output to a file or kept in a collection or whatever. Everyone should feel free to use it to check their code if that wish.
- Code: Select all
| stream app allLocalClasses |
app := SeasideCoreConfiguration.
stream := WriteStream on: (String new: 500).
allLocalClasses := app allLocalClasses.
stream nextPutAll: app name; cr.
allLocalClasses do: [:c |
(c class methodsArray) do: [:m |
m stsHasReferenceToMissingMethod ifTrue: [stream tab; nextPutAll: m name; cr].
].
(c class primaryInstance methodsArray) do: [:m |
m stsHasReferenceToMissingMethod ifTrue: [stream tab; nextPutAll: c name; cr].
].
].
stream contents.
Now back to my problem (sorry for putting two topics in one post).
To get my Seaside demo started I execute the following:
- Code: Select all
WAAdmin register: self asApplicationAt: 'SeasideDemo'.
When I worked on a Seaside project about two years ago, this was the thing to do. When I test in the envelopment environment, everything works fine. However the packaged image blows up.
WASharedConfiguration(WAConfiguration)>>#ancestorsDo:seen:
runs its #parents that for some reason has a nil object in the
OrderedCollection(a WARenderLoopConfiguration nil ).
The nil causes halt. This smells like a class is missing from the packaged image so that the nil is added to the collection and not an instance of the class. But I can't figure out what class is missing.
I create all the ".es" files when I package and when I look at them and especially classes.es, I don't find anything that helps. I just remembered that when I last played with Seaside, overly reduced pool dictionaries might have been a problem. I will see if not reducing pool dictionaries helps.
Lou