了解如何在本地安装 Pharo,以便在自己的电脑上完成 Exercism 的练习
安装 Pharo 最简单的方法,是在终端命令行中使用 zero conf 下载。
注意:如果你想升级已有的安装,请参阅升级说明。
没有安装 UNIX 风格 shell 的 Windows 用户,请跳到下面的 Windows 安装说明。
水平更高的 Linux 用户可以参考 Linux 黑客安装。
对于 Linux/OSX(假设你已经安装好 Exercism,并加入了 Pharo 赛道),进入你的 /Exercism/pharo-smalltalk 目录,然后输入:
curl https://get.pharo.org/64/ | bash
再粘贴下面的“加载脚本”,即可用 Exercism 工具启动 Pharo:
./pharo-ui Pharo.image eval "
Iceberg remoteTypeSelector: #httpsUrl.
Metacello new
baseline: 'Exercism';
repository: 'github://exercism/pharo-smalltalk:main/releases/latest';
load.
#ExercismManager asClass welcome.
"
如果在加载工具时遇到 TIMEOUT 问题,你应该退出 Pharo,并输入以下命令清除 git 缓存:
rm -rf pharo-local/iceberg/
然后重复上面./pharo-ui ...的示例。
如果问题依旧,请访问 Pharo 社区页面中介绍的 Pharo Discord 频道。
如果一切正常,你会看到加载进度条在屏幕上闪烁,随后出现一个 System Browser 窗口。
**提示:**退出 Pharo 时,请保存你的更改(打开 Pharo 菜单,选择“Save and Quit”)。 现在你只要输入以下命令,就能启动已经加载了 Exercism 的 Pharo:
./pharo-ui Pharo.image
我们还在研究 Windows 上命令行工具的最佳前置条件,不过你也可以使用 Windows Pharo Launcher 以图形界面方式安装 Pharo(这是一个管理多个 Pharo 映像的便捷工具)。如果你偏好图形界面,这个启动器在 OSX 和 Linux 上也可用。
运行下载的 .msi 文件,安装 Pharo Launcher。
运行 Pharo Launcher。
在左上角点击“New”。
在窗口的模板类别中选择“Official distributions”。
做 Exercism 练习时,从 Pharo 映像模板列表中选择最新的稳定版本(目前推荐“Pharo 10.0 64-bit (stable)”)。
点击选中一个映像模板,给它取个名字,然后点击底部的创建映像按钮(一个橙色的齿轮形状)。

模板下载完成后,会出现在右侧的 Existing Images 表格中。点击它,然后点击顶部的启动按钮(一个绿色的 play 箭头)。

Pharo 映像启动后,打开 Browse 菜单,选择 Playground 来打开 Playground,或者使用
ctrl + o + w。

最后,把下面的代码片段复制粘贴到 playground 中:
Iceberg remoteTypeSelector: #httpsUrl.
Metacello new
baseline: 'Exercism';
repository: 'github://exercism/pharo-smalltalk:main/releases/latest';
load.
#ExercismManager asClass welcome.
然后选中全部粘贴的代码,右键点击并从菜单中选择 Do it(或使用ctrl + d)来执行它。
如果一切正常,你会看到加载进度条在屏幕上闪烁,随后出现一个 System Browser 窗口。
启动 Pharo 后,你会看到一个 Welcome 项目,位于 System Browser 中(_提示:_如果你不小心关掉了这个窗口,可以从 Tools|System Browser 菜单重新打开一个)。

System Browser 左上角的面板显示你环境中的包,你会注意到安装脚本已经配置好了一个名为Exercism的包,其中包含一个名为Welcome的子项目标签。第二个面板显示类,其中也有一个名为Welcome的类。类面板下方有 4 个单选按钮:“Flat”(显示包中的类)、“Hier.”(显示类的层级结构)、“Inst. side”(显示实例方法)、“Class side”(显示类方法/构造函数)。
如果你点击 Comment 标签页,就能看到使用 Pharo Exercism 的最新说明。阅读这些注释,然后试着运行你的第一个测试。
对于其他基于文件的语言,此时你通常会切换到终端,用 Exercism CLI 获取下一个练习。虽然 Pharo 也能以类似方式处理文件,但这个环境实际上是为处理活动对象而调优的。有趣的是,类、方法和源代码在 Pharo 中和其他一切一样,都是对象。在本赛道的学习过程中,你会对此有更多了解。
针对 Exercism,我们内置了一个插件,让你可以在 IDE 中获取并提交 Pharo 练习。
你只需右键点击一个练习包(这里是左上角面板中的 Welcome 包),然后选择Exercism | Fetch Exercise菜单项。它会提示你输入练习名称(例如 hello-world),输入后就会自动为你获取。
练习名称可以在你的 Pharo 赛道页面(最右侧)的每个练习描述中找到。 那里有一条 Download 说明,其中的 CLI 字符串包含每个练习的 key。你也可以使用 CLI 说明旁边的复制按钮,把整段字符串粘贴到获取提示中(我们会自动提取出 key)。
输入有效的练习后,插件会获取相关代码并显示在 System Browser 中,你就可以开始配合测试编写代码了。
当所有测试都通过后,你可以用练习包的同一个右键菜单提交你的解答(右键点击包标签,选择Exercism | Submit Exercise...)

最后,使用Exercism | View Track Progress菜单访问 Exercism 网站,查看还有哪些练习已为你解锁,也可以发布关于你提交内容的问题,供导师阅读。
你知道吗: 启动 Pharo 时,你实际上是在恢复一个执行映像快照,类似于 VMWare 的操作系统映像。这是一个强大的概念,让你可以在操作中途挂起工作,甚至可能是在调试某段代码的时候。下次重新启动 Pharo 时,你可以在恢复的调试器中继续单步执行代码,或者继续某个重构步骤。
如果你因为安全问题需要重置 CLI 令牌,请访问你的 Exercism 设置页面,使用重置令牌按钮。完成后,你需要在 Pharo Exercism 中清除旧令牌,方法是在 Playground 中执行以下代码:
ExercismHttpClient
reset;
promptForToken.
我们有时会需要你更新 Pharo Exercism 映像中的库。请按照这些说明操作。