2

我正在尝试在 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不允许这样做?

4

1 回答 1

0

GST 并不是 Seaside 开发的真正一等公民,因此您最好的选择是在 Pharo 映像中执行 Seaside 开发的第一步,然后将该代码导出到 GST。您可能会遇到自 2011 年以来对 Seaside 进行了更改的问题。一旦您对 Seaside(在 Pharo 中)的了解更好,移植到 GST 可能不会有太多工作。如果您在 CI 设置中导出到 GST,我们将能够帮助您解决有关 Seaside 或 Seaside-dev 邮件列表的具体问题。

于 2015-08-01T18:38:04.587 回答