GNU Smalltalk中的海边异常

时间:2015-07-30 13:20:21

标签: smalltalk seaside gnu-smalltalk

我正在尝试使用GNU Smalltalk中的Seaside创建一个应用程序。我在Linux(Fedora 17)下运行GNU Smalltalk 3.2.5。

我已经运行并执行了简单的计数器测试应用程序。在我的应用程序中,我需要动态创建一些类并使用它们。但是,gst-remote无法识别它们。这是我的测试应用程序(test.st的内容):

Seaside.WAComponent subclass: Test [
    | foo |
    Test class >> canBeRoot [ ^true ]

    initialize [
        super initialize.
        Object subclass: #Foo instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'test class'.
        foo := Foo new.
    ]

    states [ ^{ self } ]

    renderContentOn: html [
        html heading: 'Foo'.
    ]
]

Test registerAsApplication: 'test'

在“服务器”端,我运行远程服务器:

$ gst-remote -I seaside.im --server --start=Seaside
gst-remote server started.

在应用程序端(实际上在同一台PC上,只是一个不同的终端窗口),我运行以下错误:

$ gst-remote -f test.st
gst-remote: error at line 330: Undefined variable 'Foo' referenced.

我不明白为什么Foo未定义。从gst交互式会话中,它可以正常工作:

st> Object subclass: #Foo instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'test class'.
Foo
st> foo := Foo new.
a Foo

为什么gst-remote不允许这样做?

1 个答案:

答案 0 :(得分:0)

GST实际上并不是Seaside开发的一流公民,所以最好的办法就是在Pharo图像中完成Seaside开发的第一步,然后将该代码导出到GST。您可能会遇到自2011年以来对Seaside进行了更改的问题。一旦您对Seaside(在Pharo)的理解更好,那么移植到GST可能不会太多工作。如果您在CI设置中导出到GST,我们将能够帮助您解决Seaside或Seaside-dev邮件列表中的具体问题。