[Glass] Failing to load Seaside using tODE

Ezequiel R. Aguerre ezeaguerre at gmail.com
Thu Jan 6 16:59:39 PST 2022

Hi everyone! I'm experimenting a little bit with GemStone. I tried to
install Seaside but the instructions are not working for me.

I've used the scripts of the GsDevKit_home to setup everything, I can
launch tODE successfully, but when I type the following commands in the
shell, they don't work.

The first one:

project install --url=http://gsdevkit.github.io/GsDevKit_home/Seaside32.ston

This one fails, but it also says something about Seaside being already
installed... so I just skip it.

But then, this command fails:

project load --loads=`#('Welcome' 'Development' 'Zinc Project' 'Examples')`

It raises an exception about accessing an array with a non-integer index.

It looks like there must be something outdated, but I'm not sure. So I
can't load Seaside to start playing with it.
If I right-click "load" on the project list, it happens the same thing.

The following is an investigation on the issue in case it clarifies

The error is raised in the following method:

MetacelloGemStonePlatform>>downloadJSON: url eTagsCache: eTagsCache
eTagsKey: eTagsKey username: username pass: pass
 "(code ...)"
  (status beginsWith: '403')
                ifTrue: [
                  | jsonObject |
                  "Oh snap! Rate limit exceeded"
                  jsonObject := MCFileTreeJsonParser parse: payload.
                  self error: (jsonObject at: 'message') ].
 "(more code...)"

jsonObject is actually an array, so jsonObject at: 'message' raises an

These are the values of the variables:

 - url: 'https://api.github.com/repos/GsDevKit/Seaside31/tags'
 - username: nil
 - pass: nil
 - eTagsKey: 'GsDevKit/Seaside31'
 - eTagsCache: aDictionary( 'GsDevKit/Seaside31' -> aDictionary() )
 - jsonObject: an array of dictionaries, each dictionary has the following
   - commit: a dictionary with a "sha" and "url" keys
   - name: a string like 'v3.1.4.2-gs'
   - node_id: a base64 encoded string, when decoded is something like:
     - tarball_url: a url
     - zipball_url: a url

I don't know how to use the debugger yet, so I can't step through the code.
But I think the problem is actually up above, in the following line:

status := headerDict at: 'status' ifAbsent: [ '403' ].

Because the server is actually responding correctly, if I "curl
https://api.github.com/repos/GsDevKit/Seaside31/tags" it works just fine.

And the following method:

MetacelloGemStonePlatform>>extractHTTPHeader: aStream do: aBlock

explicitly skips the first HTTP line (the status):

 line := aStream nextLine. "strip status"

I tried adding a line like the following:

  header at: 'status' put: (line substrings at: 2).

But then I have a problem with an "X-Ratelimit-Remaining" header.

So I'm not sure... I think there's something outdated somewhere... I don't
know how to proceed.

Or maybe this kind of things are better asked on the Github issue tracker?
I don't know, I didn't want to open an issue that may not be an issue at

Oh, before I forget, I'm running Arch Linux 64 bits, maybe the problem is
my environment.


Ezequiel R. Aguerre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/archives/glass/attachments/20220106/e5ea94e9/attachment.htm>

More information about the Glass mailing list