【问题标题】:How to build and install rails application dependencies on different hosts如何在不同主机上构建和安装 Rails 应用程序依赖项
【发布时间】:2010-12-20 17:13:30
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails deployment rubygems bundler


    【解决方案1】:

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

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

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

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

    • 工具链/
      • 斌/
        • 蟒蛇
        • ...
      • lib/
        • python2.7/
        • ...
        • 网站包/
          • ...
      • 包括/
      • ...

    【讨论】:

    • 在生产主机上构建是我在这里试图避免的。这就是为什么我尝试在构建主机上执行bundle package,然后在生产主机上安装软件包。
    • 然后在生产主机上安装包。我希望这会阻止我在生产主机上构建,但它仍然需要构建。
    • 过去我在安装 gem 时遇到过问题。我个人从不使用 gem 安装在生产服务器上。我将在构建或开发主机上安装 gem 并使用本机 OS 打包系统重新打包它。这使我能够更好地控制和更灵活的依赖关系记帐。
    【解决方案2】:

    我最终得到了一个自定义 deploy.rb。希望我能够将它作为扩展 Capistrano 的宝石来发布(但仍然不完全满意)

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2018-05-30
      • 2021-08-17
      • 1970-01-01
      • 2014-05-19
      • 2022-12-13
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多