Pharo中的FileDirectory和ReferenceStream Class等价物?

时间:2015-02-02 20:13:20

标签: smalltalk pharo seaside

我在以下位置做了持久示例:

http://book.seaside.st/book/advanced/persistency/image-based-persistency

它涉及创建一个使用FileDirectory类的方法,如下所示:

SMFileDatabase class>>backupDirectory
    ^ (FileDirectory default directoryNamed: self name) assureExistence.

Pharo似乎无法找到Class,而搜索中出现的最接近的是FileDirectoryWrapper。这会吗?

NB。我无法自己解决这个问题,因为我之前从未使用过FileDirectory或FileDirectoryWrapper,所以我在黑暗中。

稍后编辑:

找到另一个ReferenceStream。他们似乎都被弃用了。 这里提到: http://lists.gforge.inria.fr/pipermail/pharo-project/2012-June/065765.html

因为他们显然有问题,这里提到: Smalltalk ReferenceStream has problems with new instance variables?

稍后编辑2:

以下答案似乎适用于FileDirectory,而ReferenceStream可以在更新的Pharo版本中被Fuel取代。 https://stackoverflow.com/a/15742159/293856

SmartRefStrem似乎是另一种解决方案。所有这一切都没有经过我的测试。 Smalltalk ReferenceStream has problems with new instance variables?

然而

那些想要完成本书中的例子的人需要及时回顾并获得Pharo 1.4: https://gforge.inria.fr/frs/?group_id=1299

向下滚动并查找One-Click Pharo 1.4 并获取最新版本,如果有更新的版本,请执行以下操作: https://gforge.inria.fr/frs/download.php/file/31359/Pharo-1.4-14457-OneClick.zip

1.3

我很幸运能从这里获得Pharo VM: http://files.pharo.org/vm/pharo/20/mac/stable.zip

在Pharo 1.3上运行预先构建的Seaside图像: http://www.seaside.st/distributions/Seaside-3.0.7-final.zip

通过Monticello从当前图片中获取您的代码,然后"返回"进入旧图像。成功了!

2 个答案:

答案 0 :(得分:4)

最简单的方法就是这样:

self name asFileReference ensureCreateDirectory.

答案 1 :(得分:2)

Pharo在书出版后的某个时间切换到FileSystem

第一个代码的等价物现在是

SMFileDatabase class>>backupDirectory
    ^(FileSystem disk workingDirectory / self name) ensureCreateDirectory

(另外,关于ReferenceStream,Damien在你引用的帖子中给出的答案仍然适用)