Pharo:在加载包时在映像启动时执行代码

时间:2014-07-08 15:00:25

标签: pharo

我想只在加载包时才在映像启动时执行一些代码。我看到存在

Smalltalk>>#addToStartUpList:

一个方法,它允许我注册一个提供startUp和shutDown挂钩的类。

这很酷,但我不想手动执行此代码。 Pharo的推荐方法是什么?

2 个答案:

答案 0 :(得分:3)

您需要将代码放在某处。添加此类注册的常用方法是在包中的类的#initialize方法中。

例如,像这样:

MyClassWithStartUp class>>#initialize
    Smalltalk addToStartUpList: self

如果您的类MyClassWithStartUp位于您要控制的包中......那么它将在加载时自动注册。

答案 1 :(得分:2)

在1.10节中的http://pharobyexample.org/drafts/Metacello.pdf中,您可以了解如何指定前后加载脚本。您可以使用它们来设置启动列表。

我使用的方法是检查脚本本身(并将脚本放在~/Library/Preferences/pharo/中。

例如,考虑一下:

MCWorkingCopy allManagers 
  select: [ :e | e package name beginsWith: 'Renraku' ] 
  thenDo: [ :e |
    | repository |
    ...

如果你想对一堆存储库做同样的事情,或者你可以使用#detect等等。