[Glass] Newbie on GLASS - Hello world fail

Ezequiel Tolnay via Glass glass at lists.gemtalksystems.com
Mon Sep 21 05:03:37 PDT 2015


Hi Mariano,

Thanks for the feedback!

I don't know which version of seaside gets installed, 3.1x apparently.
After running "./installServer devKit 3.2.8.1" from a copy of the dev
branch of the tODE devKit, as per Dale's instructions, I mounted Seaside in
tODE, installed, and registered it as follows:

   - mount @/sys/stone/dirs/gsDevKitHome/projects/seaside31 /home seaside
   - /home/seaside/install
   - cd /home/seaside
   - ./webServer --register=zinc --port=8383
   - ./webServer --start

The stack at the error (continuation from the object log) is the following
(the error is in the 15th position):

aTDDebugger
--------------------
1.
WAGemStoneProductionErrorHandler(WAErrorHandler)>>saveExceptionContinuation:
@10 line 7
2. WAGemStoneProductionErrorHandler>>handleDefault: @2 line 3
3. WAGemStoneProductionErrorHandler(WAErrorHandler)>>handleError: @2 line 2
4.
WAGemStoneProductionErrorHandler(WAErrorHandler)>>handleGemStoneException:
@4 line 4
5.
WAGemStoneProductionErrorHandler(WAHtmlHaltAndErrorHandler)>>handleException:
@2 line 2
6. [] in
WAGemStoneProductionErrorHandler(WAExceptionHandler)>>handleExceptionsDuring:
@2 line 5
7. WAGemStoneProductionErrorHandler(ExecBlock)>>on:do: @3 line 42
8. [] in
WAGemStoneProductionErrorHandler(WAExceptionHandler)>>handleExceptionsDuring:
@2 line 8
9. [] in ExecBlock>>on:do: @4 line 49
10. MessageNotUnderstood(AbstractException)>>_executeHandler: @3 line 8
11. MessageNotUnderstood(AbstractException)>>_signalWith: @1 line 1
12. MessageNotUnderstood(AbstractException)>>signal @2 line 47
13. Symbol(Object)>>doesNotUnderstand: @9 line 10
14. Symbol(Object)>>_doesNotUnderstand:args:envId:reason: @7 line 12
*15. [] in WAInitialRenderLoopContinuation>>createRoot @3 line 3*
16. GRSmallDictionary>>at:ifAbsent: @8 line 8
17. WAGemStoneRequestContext(WARequestContext)>>rootComponentIfAbsent: @3
line 3
18. WAInitialRenderLoopContinuation>>createRoot @3 line 3
19. WAInitialRenderLoopContinuation>>basicPerformAction @2 line 3
20. [] in
WAInitialRenderLoopContinuation(WAActionPhaseContinuation)>>performAction
@2 line 2
21. WAInitialRenderLoopContinuation(ExecBlock)>>onException:do: @2 line 66
22. WAInitialRenderLoopContinuation(ExecBlock)>>on:do: @5 line 47
23.
WAGemStoneProductionErrorHandler(WAExceptionHandler)>>handleExceptionsDuring:
@2 line 3
24. [] in ExecBlock(WARenderLoopContinuation)>>withNotificationHandlerDo:
@2 line 20
25. ExecBlock>>on:do: @3 line 42
26.
WAInitialRenderLoopContinuation(WARenderLoopContinuation)>>withNotificationHandlerDo:
@8 line 21
27.
WAInitialRenderLoopContinuation(WAActionPhaseContinuation)>>performAction
@2 line 2
28.
WAInitialRenderLoopContinuation(WAActionPhaseContinuation)>>handleFiltered:
@2 line 2
29. [] in WAInitialRenderLoopContinuation(WARequestHandler)>>handle: @3
line 4
30. WAInitialRenderLoopContinuation(ExecBlock)>>on:do: @3 line 42
31. WACurrentRequestContext class(WADynamicVariable class)>>use:during: @2
line 4
32. [] in WAGemStoneRequestContext(WARequestContext)>>push:during: @2 line 5
33. WAGemStoneRequestContext(ExecBlock)>>ensure: @2 line 12
34. WAGemStoneRequestContext(WARequestContext)>>push:during: @3 line 6
35. WAInitialRenderLoopContinuation(WARequestHandler)>>handle: @2 line 4
36. [] in WAInitialRenderLoopContinuation(WASessionContinuation)>>handle:
@2 line 5
37. WAInitialRenderLoopContinuation(ExecBlock)>>on:do: @3 line 42
38.
WAInitialRenderLoopContinuation(WASessionContinuation)>>withUnregisteredHandlerDo:
@2 line 3
39. WAInitialRenderLoopContinuation(WASessionContinuation)>>handle: @4 line
5
40. WASession>>start @6 line 2
41. [] in WASession>>handleFiltered: @2 line 15
42. WAMergedRequestFields>>at:ifAbsent: @3 line 6
43. WASession>>handleFiltered: @16 line 14
44. [] in WASession(WARequestHandler)>>handle: @3 line 4
45. WASession(ExecBlock)>>on:do: @3 line 42
46. WACurrentRequestContext class(WADynamicVariable class)>>use:during: @2
line 4
47. [] in WAGemStoneRequestContext(WARequestContext)>>push:during: @2 line 5
48. WAGemStoneRequestContext(ExecBlock)>>ensure: @2 line 12
49. WAGemStoneRequestContext(WARequestContext)>>push:during: @3 line 6
50. WASession(WARequestHandler)>>handle: @2 line 4
51. WASession>>handle: @10 line 11
52. WAApplication(WARegistry)>>dispatch:to:key: @4 line 6
53. WAApplication(WARegistry)>>handle:registering: @4 line 7
54. WAApplication>>handleDefault: @3 line 2
55. WAApplication(WARegistry)>>handleFiltered: @7 line 6
56. WAApplication>>handleFiltered: @10 line 8
57. WAExceptionFilter(WARequestFilter)>>handleFiltered: @3 line 4
58. [] in WAExceptionFilter>>handleFiltered: @2 line 7
59. WAExceptionFilter(ExecBlock)>>on:do: @3 line 42
60. WACurrentExceptionHandler class(WADynamicVariable class)>>use:during:
@2 line 4
61. [] in WAExceptionFilter>>handleFiltered: @2 line 6
62. WAExceptionFilter(ExecBlock)>>onException:do: @2 line 66
63. WAExceptionFilter(ExecBlock)>>on:do: @5 line 47
64.
WAGemStoneProductionErrorHandler(WAExceptionHandler)>>handleExceptionsDuring:
@2 line 3
65. WAExceptionFilter>>handleFiltered: @5 line 4
66. [] in WAApplication(WARequestHandler)>>handle: @3 line 4
67. WAApplication(ExecBlock)>>on:do: @3 line 42
68. WACurrentRequestContext class(WADynamicVariable class)>>use:during: @2
line 4
69. [] in WAGemStoneRequestContext(WARequestContext)>>push:during: @2 line 5
70. WAGemStoneRequestContext(ExecBlock)>>ensure: @2 line 12
71. WAGemStoneRequestContext(WARequestContext)>>push:during: @3 line 6
72. WAApplication(WARequestHandler)>>handle: @2 line 4
73. WADispatcher>>handleFiltered:named: @3 line 5
74. WADispatcher>>handleFiltered: @8 line 6
75. [] in WADispatcher(WARequestHandler)>>handle: @3 line 4
76. WADispatcher(ExecBlock)>>on:do: @3 line 42
77. WACurrentRequestContext class(WADynamicVariable class)>>use:during: @2
line 4
78. [] in WAGemStoneRequestContext(WARequestContext)>>push:during: @2 line 5
79. WAGemStoneRequestContext(ExecBlock)>>ensure: @2 line 12
80. WAGemStoneRequestContext(WARequestContext)>>push:during: @3 line 6
81. WADispatcher(WARequestHandler)>>handle: @2 line 4
82. [] in WAGsZincAdaptor(WAServerAdaptor)>>handleRequest: @3 line 4
83. WAGsZincAdaptor(ExecBlock)>>on:do: @3 line 42
84. WAGsZincAdaptor(WAServerAdaptor)>>handleRequest: @2 line 5
85. WAGsZincAdaptor(WAServerAdaptor)>>handle: @2 line 4
86. [] in WAGsZincAdaptor(WAServerAdaptor)>>process: @2 line 6
87. WAGsZincAdaptor(ExecBlock)>>ensure: @2 line 12
88. WAGsZincAdaptor(WAServerAdaptor)>>process: @4 line 7
89. [] in WAGsZincAdaptor>>process: @2 line 6
90. [] in GRGemStonePlatform>>seasideProcessRequestWithRetry:resultBlock:
@2 line 12
91. GRGemStonePlatform(ExecBlock)>>on:do: @3 line 42
92. [] in GRGemStonePlatform>>seasideProcessRequestWithRetry:resultBlock:
@11 line 13
93. GRGemStonePlatform(ExecBlock)>>ensure: @2 line 12
94. TransientRecursionLock>>critical: @11 line 12
95. GRGemStonePlatform>>seasideProcessRequestWithRetry:resultBlock: @3 line
6
96. [] in GRGemStonePlatform>>seasideProcessRequest:adaptor:resultBlock: @2
line 6
97. Array(Collection)>>do: @5 line 10
98. [] in GRGemStonePlatform>>seasideProcessRequest:adaptor:resultBlock: @3
line 5
99. GRGemStonePlatform(ExecBlock)>>on:do: @3 line 42
100. GRGemStonePlatform>>seasideProcessRequest:adaptor:resultBlock: @2 line
12
101. WAGsZincAdaptor>>process: @3 line 4
102. ZnSeasideServerAdaptorDelegate>>handleRequest: @3 line 4
103. [] in
ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>authenticateAndDelegateRequest:
@7 line 12
104.
ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>authenticateRequest:do:
@4 line 6
105.
ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>authenticateAndDelegateRequest:
@2 line 8
106. [] in
ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>handleRequestProtected:
@2 line 5
107. ZnManagingMultiThreadedServer(ExecBlock)>>on:do: @3 line 42
108.
ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>handleRequestProtected:
@2 line 6
109. ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>handleRequest:
@5 line 9
110. [] in
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeOneRequestResponseOn:
@2 line 11
111. ZnManagingMultiThreadedServer(ExecBlock)>>on:do: @3 line 42
112.
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeOneRequestResponseOn:
@6 line 15
113. [] in
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn:
@2 line 10
114. [] in ZnCurrentServer class(DynamicVariable class)>>value:during: @3
line 9
115. ZnCurrentServer class(ExecBlock)>>ensure: @2 line 12
116. ZnCurrentServer class(DynamicVariable class)>>value:during: @6 line 10
117. [] in
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn:
@4 line 9
118. ZnManagingMultiThreadedServer(ExecBlock)>>on:do: @3 line 42
119.
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn:
@4 line 11
120. [] in
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn:
@2 line 17
121. ZnManagingMultiThreadedServer(ExecBlock)>>on:do: @3 line 42
122. [] in
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn:
@2 line 18
123. ZnManagingMultiThreadedServer(ExecBlock)>>ensure: @2 line 12
124. [] in
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn:
@2 line 20
125. [] in ExecBlock>>ifCurtailed: @2 line 6
126. ExecBlock>>ensure: @2 line 12
127. ZnManagingMultiThreadedServer(ExecBlock)>>ifCurtailed: @3 line 8
128. [] in
ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn:
@2 line 23
129. GsProcess>>_start @7 line 16
130. GsNMethod class>>_gsReturnToC @1 line 1

About NetLDI port, I found what the problem is. gs64ldi is the default ldi
service name and port, but in devKit the ldi is called devKit_ldi. I added
a devKit_ldi to /etc/services and now it works well.

According to $GS_HOME/projects/seaside31/install.ston, it looks like it is
installing seaside3.1.3.1.

I found I don't have a ConfigurationOfSeaside defined. I searched online
and found this and run it to test it:

Gofer new
        squeaksource: 'MetacelloRepository';
        package: 'ConfigurationOfSeaside';
        load.


ConfigurationOfSeaside now is there, "ConfigurationOfSeaside project" works
well, but "ConfigurationOfSeaside project latestVersion" crashes (name not
found: Pier tests):
aTDDebugger
--------------------
1. UserDefinedError(AbstractException)>>_signalWith: @5 line 25
2. UserDefinedError(AbstractException)>>signal @2 line 47
3. MetacelloMCVersionSpec(Object)>>error: @6 line 7
*4. [] in
MetacelloMCVersionSpec(MetacelloVersionSpec)>>resolveToLoadableSpec:forLoad:forMap:packages:
@3 line 7*
5. [] in
MetacelloMCVersionSpec(MetacelloVersionSpec)>>packageNamed:forLoad:forMap:ifAbsent:
@33 line 35
6. Dictionary>>at:ifAbsent: @7 line 10
7.
MetacelloMCVersionSpec(MetacelloVersionSpec)>>packageNamed:forLoad:forMap:ifAbsent:
@2 line 9
8.
MetacelloMCVersionSpec(MetacelloVersionSpec)>>resolveToLoadableSpec:forLoad:forMap:packages:
@2 line 4
9. [] in
MetacelloMCVersionSpec(MetacelloVersionSpec)>>resolveToLoadableSpecs:forLoad:map:
@2 line 12
10. [] in ExecBlock1(Set)>>do: @2 line 11
11. [] in ExecBlock2(KeyValueDictionary)>>keysDo: @2 line 7
12. KeyValueDictionary>>keysAndValuesDo: @18 line 15
13. KeyValueDictionary>>keysDo: @2 line 6
14. Set>>do: @3 line 11
15.
MetacelloMCVersionSpec(MetacelloVersionSpec)>>resolveToLoadableSpecs:forLoad:map:
@13 line 10
16. MetacelloMCVersionSpec(MetacelloVersionSpec)>>resolveToLoadableSpecs:
@4 line 12
17. [] in
MetacelloMCVersionSpec(MetacelloVersionSpec)>>expandToLoadableSpecNames: @2
line 9
18. [] in ExecBlock1(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
@13 line 14
19. [] in
ExecBlock0(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary: @2
line 9
20. ExecBlock0(ExecBlock)>>on:do: @3 line 42
21.
MetacelloGemStonePlatform(MetacelloPlatform)>>useStackCacheDuring:defaultDictionary:
@9 line 10
22.
MetacelloGemStonePlatform(MetacelloPlatform)>>stackCacheFor:cacheClass:at:doing:
@2 line 4
23. MetacelloGemStonePlatform(MetacelloPlatform)>>stackCacheFor:at:doing:
@2 line 3
24.
MetacelloMCVersionSpec(MetacelloVersionSpec)>>expandToLoadableSpecNames: @6
line 6
25. MetacelloMCVersionSpec>>computeVersionStatus: @2 line 2
26. MetacelloMCVersion>>computeVersionStatus @3 line 9
27. MetacelloMCVersion(MetacelloVersion)>>versionStatus @3 line 3
28. MetacelloMCVersion(MetacelloVersion)>>printOn: @6 line 5
29. MetacelloMCVersion(Object)>>printString @6 line 14
30.
TDWorkspaceClientElementBuilder(TDClientSourceElementBuilder)>>printItMenuAction:selectedText:
@5 line 7
31.
TDWorkspaceClientElementBuilder(TDWindowBuilder)>>handleMenuActions:listElement:actionArg:
@12 line 10
32. [] in
TDWorkspaceClientElementBuilder(TDClientSourceElementBuilder)>>menuActionBlock
@6 line 8
33.
TDWorkspaceClientElementBuilder(ExecBlock)>>value:value:value:value:value:
@2 line 11
34. GsNMethod class>>_gsReturnToC @1 line 1

Cheers!

Ziggy

On 21 September 2015 at 00:13, Mariano Martinez Peck <marianopeck at gmail.com>
wrote:

>
>
> On Sun, Sep 20, 2015 at 9:48 AM, Ezequiel Tolnay via Glass <
> glass at lists.gemtalksystems.com> wrote:
>
>> Hi all!
>>
>> I've installed the DevKit [dev branch, thanks Dale for your guidence so
>> far] in both my server (Debian Wheezy) and my desktop (OSX), and connect
>> via SSH port forwarding. The seaside gem is now working, the "counter"
>> examples work well, and I tested introducing a divide by zero error to
>> debug via continuation and all went well there. So far so good (with a few
>> hiccups that I managed to resolve on the way).
>>
>> I'm now attempting the same Seaside tutorial that I did a while ago on
>> Pharo (boquitas). I'm stuck now in the simplest Hello World. I get an error
>> in *WAInitialRenderLoopContinuation>>createRoot*:
>>
>> *(error 2010), a Symbol does not understand #'new'".*
>>
>> In the freshly installed devKit, the error raises by doing the following:
>>
>>
>>    1. In tODE workspace:
>>    -      WAComponent subclass: #HelloWorld
>>                instanceVariableNames: '' classVariableNames: ''
>>                poolDictionaries: '' category: 'GLASS'.
>>       2. Browse to HelloWorld in tODE, and add for it a new protocol
>>    called "test" (without protocols, adding a new method fails, is this a
>>    bug?).
>>    3. Add new method:
>>    -      renderContentOn: html
>>                html heading: 'Hello world!'.
>>    4. Register the class running this in the tODE workspace:
>>    -      WAAdmin register: HelloWorld asApplicationAt: 'hello'.
>>       5. Open seaside on the Internet browser (http://localhost:8383),
>>    "hello" application is there.
>>    6. Click on "hello" raises a "does not understand #new" error.
>>
>>
> You may want to copy the stack of the error? (CMD+Shift+P from the tODE
> debugger will open the stack in a printable way so that you can copy paste)
> Also..which version of Seaside did you install?
>
>
>
>> A couple more questions:
>>
>>    1. after installing via "./installServer devKit 3.2.8.1" netLDI
>>    listens in different random ports each time it starts. How do I get it to
>>    listen on the one in the default gs64ldi port 50377 always instead?
>>
>>
> I am not sure if  the script startNetldi allows you to do that. But, what
> I can tell you for sure is that dealing directly to netldi, DOES allow you
> to choose ports. For example, this is how I start netldi in my scripts:
>
> GEMSTONE_USER -n -P $NETLDI_PORT -p`expr $NETLDI_PORT + 1`:`expr
> $NETLDI_PORT + 2` -l $APPLICATION_LOG_DIR/netldi$APPLICATION_NAME.log
> netldi$APPLICATION_NAME > $GEMSTONE_LOGDIR/netldiStartup.log 2>&1'
>
> Note the arguments -P and -p .. so you maybe need to have you custom
> script to start/stop netldi (based on startNetldi script)
> https://github.com/GsDevKit/gsDevKitHome/blob/master/bin/startNetldi
>
> Or you can convince Dale to add some arguments to #startNetldi   :)
>
>>
>>    1. I managed to get GemStone and netLDI to listen in localhost
>>
>>
> Uhhhh this is a very good idea!!! This is for security reasons right?
>
>
>>
>>    1. only via the config option "STN_LISTENING_ADDRESSES = "::1";" on
>>    $GS_HOME/gemstone/stones/devKit/extents/system.conf, but couldn't figure
>>    out how to configure zinc to listen only on localhost. I modified
>>    *WAGemStoneRunSeasideGems>>startOn:* to "*self adaptorClass startOn:
>>    port bindingAddressOn: '127.0.0.1'*", and created *WAServerAdaptor
>>    class>>startOn:bindingAddressOn:* as a copy of *>>startOn:*, but with
>>    "*adaptor server bindingAddress: aBindingAddress.*" right before
>>    "adaptor start". Is there a more appropriate way to do this?
>>
>>
> Good idea. Which kind of socket address object are you instantiating and
> how do you get an instance out of a string like 'localhost'?
>
>
>>
>>    1. The standard Seaside landing page on this installation goes
>>    straight to the "browse" page, and does not include several of the examples
>>    that I remember from the default Seaside installation in Pharo, like the
>>    ones that use make use of JQuery. Is this expected in Gemstone's version or
>>    is indicative of a partial/failed install?
>>
>>
> This is very likely because you installed a newer Seaside version whose
> "ConfigurationOfSeaside" brings different packages by default than what it
> used to load default. You should simply install the packages/groups you
> want (like jQuery for example) that are not in the default load.
>
> For example, this is what I load:
>
>  #('Core' 'Zinc-Seaside' 'Javascript' 'JQuery' 'JSON' 'FastCGI' 'Email')
>
>
>>
>>    1.
>>
>> Thanks!
>>
>> _______________________________________________
>> Glass mailing list
>> Glass at lists.gemtalksystems.com
>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>
>>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20150921/55606b5c/attachment-0001.html>


More information about the Glass mailing list