我正在尝试使用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
不允许这样做?
答案 0 :(得分:0)
GST实际上并不是Seaside开发的一流公民,所以最好的办法就是在Pharo图像中完成Seaside开发的第一步,然后将该代码导出到GST。您可能会遇到自2011年以来对Seaside进行了更改的问题。一旦您对Seaside(在Pharo)的理解更好,那么移植到GST可能不会太多工作。如果您在CI设置中导出到GST,我们将能够帮助您解决Seaside或Seaside-dev邮件列表中的具体问题。