[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')`
Seaside3

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

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

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
information:
   - 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:
'03:Ref8633068:refs/tags/v3.1.4.2-gs'
     - 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
all.

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

Thanks!

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