我想打包一个从git获得的ruby程序到RPM包中。 我有我的处置build立服务器和生产服务器(相同的OS /相同的拱门)。
作为大多数ruby项目,我的确有gem依赖项。
我发现了两种做我想做的方法,我想知道哪一个是最好的 – 最unix / linux的哲学 – 操作明智
第一个(对我来说看起来更好)是做一个bundle install --standalone --deployment --path %{buildroot}/usr/lib/rubygems/1.8/gems/ --binstubs %{buildroot}/usr/lib/rubygems/1.8.bin 。 这将在要部署.rpm的服务器上的gem系统path上安装gem,不需要安装bundle。 在哪里我不确定,是什么时候我会安装其他转速与相同的gem会发生什么? 当我用两个软件包共享的gem移除一个软件包时发生了什么?
bundle install --deployment命令将直接在项目本身中进行。 这样一切都可以在vendor/目录中find。 在线上,我可以看到一些有关供应商一切政策的文章,但这似乎并不正确,因为大量的gem将会被复制。 由于我没有一个ruby背景,我不知道它可以有什么确切的利弊
如果有人已经做了类似的事情,你要采取哪种方式? 什么 – 操作明智 – 是最好的呢?
除非您将所有相关的gem部署在RPM中,否则不要使用RPM部署gem 。 请参阅Ruby的Fedora打包指南,了解有关构buildRPM的正确方法以及构buildgem的示例规范文件的信息,以及如何为Rails Web应用程序构buildRPM。
如果您需要做一些打破RPM最佳实践的事情,那么最好不要使用RPM进行部署 。 而不是像capistrano那样使用重点部署工具; 它可以自动检查你的应用程序从git并正确部署(一旦你configuration它)。