我和我的团队正在开始构建一些可重用的脚本。只有当他们使用专有应用程序和我们特定的服务器环境时,它们才能在我们的组织中重复使用。所以不太适合rubyforge或github等。
我的问题是,确保我们所有用户都使用最新最好的脚本的最佳做法是什么?我们几乎在一台服务器上运行这些脚本,但可能需要扩展到其他服务器。
我们应该将它们捆绑到gem(s)并启动私有gem服务器吗?
或者类似于常见的可共享lib目录的东西。也许有一个从我们的SCM下载/更新的脚本?
其他想法?
...谢谢
答案 0 :(得分:2)
这取决于一些因素,例如有多少人想要更改代码(只有您的团队或其他人),或者您有多少钱?
我个人创建了一个build + gem服务器,你可以使用某个版本控制系统上传脚本(比如git或svn,取决于有多少人正在处理项目),然后创建一个cron作业,将以通用间隔自动生成来自源的宝石,并将它们存储为不同的版本。通过这种方式,您可以确保始终拥有一个存储应用程序宝石的授权服务器,如果出现问题,您可以随时获得早期版本。您的脚本可能会创建单独的gem版本名称,例如“appserv-edge”或“appserv-stable”
如果你有钱可以支付,你可能也想查看github的闭源选项。然而,我不知道他们是否拥有非开源项目的宝石建造和托管设施。
答案 1 :(得分:1)
我已经创建了一个私有gemserver,它很容易。唯一棘手的问题是决定用户上传宝石的方式。就个人而言,我只是使用PHP上传表单,并检查以确保它没有掩盖任何现有的宝石。
答案 2 :(得分:1)
在我的办公室,我们对一些共享脚本和库使用了一些混合方法。我们将它们全部捆绑到gem中,但不是使用gem服务器,而是将它们保存在源代码控制中,然后构建gem(使用newgem)并根据需要在本地安装它。
这种方法的缺点是它需要两个命令而不是一个来安装gem,但这在qa和生产环境中大大减轻了,因为我们使用Capistrano进行部署。
好处是它很简单,如果你正在使用需要更改gem的东西,那么在开发过程中会有一个非常短的编辑/构建/部署周期。我目前正在为共享gem提供很多常用功能,所以我真的很欣赏这个方面。