FileDirectory and ReferenceStream Class equivalent

2019-05-26 00:10发布

I'm doing the persistance example at:

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

It involves creating a method that uses the FileDirectory class like this:

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

Pharo seems to be unable to find the Class and the closest that comes out in search is FileDirectoryWrapper. Will this do?

NB. I can't figure this out myself since I've never used FileDirectory or FileDirectoryWrapper before so I'm in the dark.

Later edit:

Found another one ReferenceStream. They both seem to have been deprecated. Mentioned here: http://lists.gforge.inria.fr/pipermail/pharo-project/2012-June/065765.html

Because they apparently had problems, mentioned here: Smalltalk ReferenceStream has problems with new instance variables?

Later edit 2:

It seems the answers below will work for FileDirectory, and ReferenceStream can be replaced by Fuel in newer Pharo releases. https://stackoverflow.com/a/15742159/293856

SmartRefStrem seems another solution to the bugs. All this is untested by me. Smalltalk ReferenceStream has problems with new instance variables?

However:

Those wanting to finish the example in the book need to go back in time and get a Pharo 1.4 from: https://gforge.inria.fr/frs/?group_id=1299

Scroll down and look for One-Click Pharo 1.4 and get the latest build, if there is a newer one than: https://gforge.inria.fr/frs/download.php/file/31359/Pharo-1.4-14457-OneClick.zip

or 1.3.

I got lucky with a Pharo VM from here: http://files.pharo.org/vm/pharo/20/mac/stable.zip

With a prebuilt Seaside image running on Pharo 1.3 here: http://www.seaside.st/distributions/Seaside-3.0.7-final.zip

Get your code out of the current image via Monticello and then "back" into the older image. Success!

2条回答
老娘就宠你
2楼-- · 2019-05-26 00:33

The simplest way to do it is like this:

self name asFileReference ensureCreateDirectory.
查看更多
Ridiculous、
3楼-- · 2019-05-26 00:52

Pharo switched to FileSystem some time after the book was published.

The equivalent for the first code is now

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

(also, regarding ReferenceStream, the answer given by Damien in the post you referenced still holds true)

查看更多
登录 后发表回答