[Glass] Newbie on GLASS - Hello world fail

Ezequiel Tolnay via Glass glass at lists.gemtalksystems.com
Mon Sep 21 09:12:59 PDT 2015


Good news, I reinstalled the whole thing again from scratch (the latest
version in the dev branch) and now it is working!

>From Hello World to a full featured website will be a steep uphill, but I
finally have a working environment! Stoked :)

Cheers!

Ziggy

On 21 September 2015 at 22:03, Ezequiel Tolnay <etolnay at gmail.com> wrote:

> 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/20150922/6849c905/attachment-0001.html>


More information about the Glass mailing list