2012-07-05 71 views
0

我无法将我的大脑包装在以下内容中......我希望有一种简单的“rubyist”方法来解决此问题。Ruby:分发应用程序“Ruby Way”

我有几个linux服务器,都是通过一堆ruby脚本来管理自己的配置。所有这些脚本都依赖于一个易于使用“gem install”安装在所有主机上的utils gem。 然而,应用程序本身是主机依赖。

例如处理夜间数据库备份的ruby脚本只对数据库主机有意义。解析应用程序服务器日志文件的脚本在数据库主机上没有任何关系,aso。

使用utils gem很容易。我只是把它放到我们的gem服务器上,每个主机只是取它。但是应用程序本身及其配置目前都是手动复制的。但这是一种愚蠢的行为。

我真的很想把app + config打包成它自己的ruby gem。这部分很简单。但是我希望应用程序脚本安装到/ usr/local/bin,并将配置文件安装到/ usr/local/etc。但我无法弄清楚如何告诉gemspec如何处理每个文件的安装路径,包括所有者更改以及可能的强制手动比较/自动合并,以防配置发生变化。

我偷偷尝试让厨师系统启动,这可以解决所有问题。但是目前这里有太多的事情阻止了这样的基础设施的建立......我甚至不能使用洒水......可悲的是。所以目前这一切都很讨厌。

那么有没有办法告诉我的gemspec如何处理某些文件,或者至少有一种方式我可以告诉gemspec在安装时运行某个文件,这样我就可以用这些方法编写代码了?

或许你有类似的情况,并有一个很好的解决方案,适合你,你不介意与我分享你的智慧?

Thx提前, 斯特凡

回答

0

我会收拾该应用程序作为一个包。也就是说,在Debian/Ubuntu上制作一个.deb文件,在RedHat上制作.rpm。等等。

这解决了将可执行文件和配置放置到正确的文件夹的问题。

+0

是的,我已经想过这是一种最后的手段。因为摆弄rpm规格并不好玩。我们在这里为其他东西构建rpm,但开销很大。 – 2012-07-05 12:05:51

+0

我认为这是正确的方法。它是可管理和可版本化的。我可能错了。 – 2012-07-05 12:09:05

+0

@StefanMarbury我同意在为应用程序创建操作系统特定软件包方面付出的努力是痛苦的,但不会浪费。系统管理员安装您的代码将更加接受和基于厨师的信息将变得非常简单。 – 2012-07-05 19:16:05