4

我和我的团队开始构建一些可重用的脚本。仅当它们与专有应用程序和我们特定的服务器环境一起使用时,它们才能在我们的组织中重复使用。所以不太适合rubyforge或github等。

我的问题是,确保我们在所有用户中都使用最新最好的脚本的最佳做法是什么?我们几乎在一台服务器上运行这些脚本,但可能需要扩展到其他服务器。

我们应该将它们捆绑到 gem(s) 中并启动一个私有 gem 服务器吗?

或者更简单的东西,比如一个通用的、可共享的 lib 目录。也许使用脚本从我们的 SCM 下载/更新?

其他想法?

谢谢....

4

3 回答 3

2

这取决于一些因素,比如有多少人想要更改代码(只有你的团队,或者其他人),或者你有多少钱?

就我个人而言,我会创建一个 build+gem 服务器,您可以在其中使用一些版本控制系统(如 git 或 svn,取决于有多少人在项目上工作)上传脚本,然后创建一个 cron 作业,它会自动生成以通用间隔从源中获取 gem,并将它们存储为不同的版本。通过这种方式,您可以确保始终拥有存储应用程序 gem 的权威服务器,并且如果出现问题,您始终可以获得早期版本。您的脚本可能会创建单独的 gem 版本名称,例如“appserv-edge”或“appserv-stable”

如果您有钱,您可能还想查看 github 的封闭源代码选项。但是,我不知道他们是否有用于非开源程序的 gem 构建和托管设施。

于 2009-06-16T08:44:01.740 回答
1

我创建了一个私人 gemserver,这很容易。唯一棘手的一点是决定您希望用户如何上传 gem。就个人而言,我只是使用一个 PHP 上传表单,并让它检查以确保它没有掩盖任何现有的 gem。

于 2009-06-16T18:59:19.130 回答
1

在我的办公室,我们对一些共享脚本和库使用了一些混合方法。我们确实将它们全部捆绑到一个 gem 中,但我们没有使用 gem 服务器,而是将它们保存在源代码控制中,然后构建 gem(使用 newgem)并根据需要在本地安装它。

这种方法的缺点是它需要两个命令而不是一个来安装 gem,但这在 qa 和生产环境中很大程度上得到缓解,因为我们使用 Capistrano 进行部署。

好处是它非常简单,并且在开发中,如果您正在处理需要更改 gem 的东西,那么编辑/构建/部署周期非常短。我目前正在将许多通用功能引入共享 gem,所以我真的很欣赏这方面。

于 2009-06-16T20:55:32.373 回答