如何在不同主机上构建和安装rails应用程序依赖项

时间:2010-12-20 17:13:30

标签: ruby-on-rails deployment rubygems bundler

我有一个我想部署的rails 3应用程序。我的部署环境没有安装构建工具,因此无法使用本机扩展安装依赖项。

我有一个构建主机配置了构建工具,可以构建本机扩展。

如何从构建主机部署本机扩展?

我尝试在构建主机上执行bundle package,在远程主机上尝试bundle install --local。它正确安装没有本机扩展的gem,但它仍尝试在生产主机上构建本机扩展。

2 个答案:

答案 0 :(得分:0)

在生产服务器上构建是不好的做法。

当我部署Django或Rails时,我总是为操作系统包管理系统无法覆盖的任何内容构建工具链。然后我使用该工具链进行开发和部署。这可以确保每个人都使用相同版本的工具。

要创建工具链,您需要在该目录中安装软件包和支持可执行文件。您还需要确保它们可以重新定位。

例如,我目前在RedHat上使用Django。 RedHat不使用最新版本的python,而且我使用的许多python库比存储库维护者更频繁地使用它。因此,最新软件通常没有RPM。我创建了一个工具链目录,在我需要的所有库中编译了python到该目录中。然后我将其捆绑到RPM中进行部署。

  • 工具链/
    • 仓/
      • ...
    • LIB /
      • python2.7 /
      • ...
      • 站点包/
        • ...
    • include /
    • ...

答案 1 :(得分:0)

我最终得到了自定义deploy.rb。希望我能够将它作为延伸Capistrano的宝石(尽管仍然不完全满意)但是它仍然可以重新开始。