我已经在 heroku 上部署了一个 campfire 机器人(sinatra 应用程序使用 tinder 来收听 campfire 房间),我想查询它在另一个 heroku 应用程序上部署的内容与我们的 github 存储库中的内容之间的 git diff .如果我在本地这样做,我会
- 克隆 github 仓库
- 添加 heroku 远程
- 在需要时运行
git diff
然而,在 heroku 上,我仅限于只有一个 tmp 目录(在 bamboo 上)或一个临时文件系统(在 cedar 上),而且还难以为应用程序运行的用户管理 ssh key 。
我如何在 heroku 上完成此操作,最好能够以树格式显示结果?
最佳答案
我假设您对 cedar's ephemeral filesystem 不满意在那个文件中,每次 dyno 重启都会丢失,并且在 cross-dyno 上不可见。接受这些限制显然是最简单的解决方案(每个 dyno 可能必须创建自己特定的 git 存储库,但仅此而已)。
第二个最直接的解决方案是在别处计算 git 日志。您可以编写一个小型的类似 web 服务的应用程序(可能使用 Sinatra)来接受两个存储库 url,并返回它们的差异。然后你可以从 heroku 应用程序查询它。但我想这已被排除,因为您要求“在 Heroku 上”执行此操作。
这将我们带到了最后一个解决方案;它涉及在内存中创建所有内容;必须使用类似 FakeFS 的内容创建初始文件夹并且 git 控制必须由 ruby 本地完成; Scott Chacon's grit fork进行 native 调用而不是脱壳,因此它可能会起作用(我不知道 Chacon 的更改是否已移植到主砂砾中)。这样所有的文件系统访问都可以从 ruby 完成,所有的东西都在内存中(顺便说一句,你可能想升级你的内存)
我没有亲自尝试过这些,我不知道它们的性能如何。
如果您需要持久性,也许您可以将整个事情编码到数据库中/从数据库中编码,但这听起来很麻烦。
希望对您有所帮助。
关于ruby - 来自 heroku 的 git diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6733829/