Pharo 中的 FileDirectory 和 ReferenceStream Class 等价物?
FileDirectory and ReferenceStream Class equivalents in Pharo?
我正在做持久性示例:
http://book.seaside.st/book/advanced/persistency/image-based-persistency
它涉及创建一个使用 FileDirectory class 的方法,如下所示:
SMFileDatabase class>>backupDirectory
^ (FileDirectory default directoryNamed: self name) assureExistence.
Pharo 似乎无法找到 Class,搜索中最接近的是 FileDirectoryWrapper。这样可以吗?
注意。我自己也弄不明白,因为我以前从未使用过 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 替换。
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 从当前映像中获取代码,然后 "back" 将代码放入旧映像中。成功!
Pharo 在本书出版一段时间后切换到 FileSystem
。
第一个代码的等价物现在是
SMFileDatabase class>>backupDirectory
^(FileSystem disk workingDirectory / self name) ensureCreateDirectory
(另外,关于 ReferenceStream
,Damien 在您引用的 post 中给出的答案仍然适用)
最简单的方法是这样的:
self name asFileReference ensureCreateDirectory.
我正在做持久性示例:
http://book.seaside.st/book/advanced/persistency/image-based-persistency
它涉及创建一个使用 FileDirectory class 的方法,如下所示:
SMFileDatabase class>>backupDirectory
^ (FileDirectory default directoryNamed: self name) assureExistence.
Pharo 似乎无法找到 Class,搜索中最接近的是 FileDirectoryWrapper。这样可以吗?
注意。我自己也弄不明白,因为我以前从未使用过 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 替换。
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 从当前映像中获取代码,然后 "back" 将代码放入旧映像中。成功!
Pharo 在本书出版一段时间后切换到 FileSystem
。
第一个代码的等价物现在是
SMFileDatabase class>>backupDirectory
^(FileSystem disk workingDirectory / self name) ensureCreateDirectory
(另外,关于 ReferenceStream
,Damien 在您引用的 post 中给出的答案仍然适用)
最简单的方法是这样的:
self name asFileReference ensureCreateDirectory.