【问题标题】:Ruby: Distributing Apps the "Ruby Way"Ruby:以“Ruby 方式”分发应用程序
【发布时间】:2012-07-05 11:53:17
【问题描述】:

我无法将我的大脑包裹在以下事情上......我希望有一个简单的“rubyist”方法来解决这个问题。

我有几台 linux 服务器,它们都通过一堆带有自己配置的 ruby​​ 脚本进行管理。所有这些脚本都依赖于一个 utils gem,它可以通过“gem install”轻松安装在所有主机上。 然而,应用程序本身是主机依赖的。

例如处理夜间数据库备份的 ruby​​ 脚本仅在数据库主机上才有意义。而且解析应用服务器日志文件的脚本在数据库主机上也没有任何关系。

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

我真的很想将应用程序 + 配置打包到它自己的 ruby​​ gem 中。这部分很容易。但是我希望将应用脚本安装到 /usr/local/bin 并将配置文件安装到 /usr/local/etc。但我不知道如何告诉 gemspec 如何处理每个文件的安装路径,包括所有者更改和可能的强制手动差异/自动合并,以防配置发生更改。

我偷偷尝试启动一个厨师系统,它可以解决所有问题。但是目前这里发生了太多事情,阻止了这样一个基础设施的设置......我什至不能使用洒......遗憾的是。所以现在一切都很糟糕。

那么有没有办法告诉我的 gemspec 如何处理某些文件,或者至少有一种方法可以告诉 gemspec 在安装时运行某个文件,以便我可以编写解决这些问题的方法?

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

提前谢谢, 斯蒂芬

【问题讨论】:

    标签: ruby deployment


    【解决方案1】:

    我会将该应用打包为一个包。即在 Debian/Ubuntu 上制作 .deb 文件,在 RedHat 上制作 .rpm 等。

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

    【讨论】:

    • 是的,我已经考虑过这是最后的手段。因为摆弄 rpm 规格并不好玩。我们在这里为其他东西构建 rpm,但开销有点大。
    • 我认为这是正确的方法。它是可管理和可版本化的。我可能弄错了。
    • @StefanMarbury 我同意为您的应用程序创建特定于操作系统的程序包所付出的努力是痛苦的,但不会浪费。安装您的代码的系统管理员将更容易接受,并且基于厨师的收据将变得非常简单。
    • @MarkO'Connor 除了我是安装系统管理员 ;) 我同意。所以Í我想在这里让我自己的生活更轻松。但我希望我可以用 gem 而不是 rpm 来做到这一点。但由于它似乎不适用于宝石,我认为除了走那种缓慢而痛苦的方式之外别无他法^^
    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    相关资源
    最近更新 更多