【问题标题】:Deploying binary gems to a different platform将二进制 gem 部署到不同的平台
【发布时间】:2008-10-10 09:05:12
【问题描述】:

我有一个需要部署的 Rails 应用程序。以下是事实:

  • 该应用是在 Windows 上开发的,需要 Windows 二进制 gems
  • 应用程序将部署到 Open Solaris 共享服务器 (Joyent)
  • 我没有权限在服务器上安装 gems
  • 对于非二进制gem,我可以简单地在本地做一个rake gems:unpack然后上传;这很好用。

所以我的问题是,如何将我需要的 二进制 gem 放到我的生产服务器上?

【问题讨论】:

    标签: ruby-on-rails ruby deployment gem


    【解决方案1】:
    • 该应用是在 Windows 上开发的,需要 Windows 二进制 gems
    • 应用程序将部署到 Open Solaris 共享服务器 (Joyent)

    您确实意识到您无法在打开的 solaris 上运行 Windows 二进制文件。 Windows其实和solaris完全不同...

    如果 gem 来自第三方,您可以下载其他人为 solaris 制作的预打包二进制版本。然后,您可以将它们放在供应商目录中并从那里加载它们,而不是安装 gem。

    如果您无法获得用于 solaris 的预打包二进制文件,则需要获得自己的 solaris 机器(使用 Virtual PC、VMWare、VirtualBox 等),使用它来编译 gem,然后提取二进制文件出去。

    如果您实际上只有可在 Windows 上运行的源代码(例如:您自己构建了它,或者提供 gem 的人仅将其设计为在 Windows 上运行),那么您就完蛋了。你需要找到一个跨平台的替代品。

    如果您能告诉我们您所谈论的哪些宝石会有所帮助,这样人们就可以帮助找到更具体的解决方案,并准确解释正在发生的事情。

    【讨论】:

    • Joyent 似乎给了你 root 访问权限,所以你可以安装任何你想要的 gem,假设它可以在 Solaris 下编译wiki.joyent.com/all-accelerators:kb:rubygems
    • 好点,我忘了。 Joyent(以及让他们这样做的 solaris 区域的东西)很棒
    【解决方案2】:

    请求共享服务器管理员为您安装 gem。如果它们是来自知名域的“标准”gem,那真的应该没什么大不了的,我的共享服务器提供商一直都在这样做。

    【讨论】:

      【解决方案3】:

      二进制宝石是真正的问题。对于所有其他 gem,您可以使用 vendor/gems 目录(仅适用于 Rails 2.1+)。

      【讨论】:

        【解决方案4】:

        Vendor everything.

        这有两件事。它使您的应用程序可部署,而无需依赖系统安装的 gems,其次,它将特定版本的 gem 冻结到您的应用程序。因此,如果其他人从您的 SCM 工具中检查出来,他们不会出现版本不匹配的问题,并且可以正常运行。

        祝你好运!

        【讨论】:

        【解决方案5】:

        您可能必须使用交叉编译器来定位在 Windows 上运行的 Solaris。

        构建交叉编译器通常是一个困难且容易出错的过程。我以前做过,复杂性不适合胆小的人。理想情况下,您会找到可以访问 Solaris 构建机器的人并让他们为您创建二进制文件。

        如果您必须使用交叉编译器路线,我怀疑解决方案是安装 cygwin 并使用其构建工具来创建 cygwin 托管的 solaris 交叉编译器。我建议查看crosstool 项目,该项目将为您提供处理一些细节的脚本。

        【讨论】:

        • 在 VirtualBox VM 上简单地安装 Open Solaris 并在那里编译不是更容易吗?
        • 是的,我想会的。不过,海报并没有提到 Open Solaris,所以我认为它是旧的。
        猜你喜欢
        • 1970-01-01
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 2020-03-09
        • 2019-06-05
        • 2017-05-25
        • 2020-10-30
        • 1970-01-01
        相关资源
        最近更新 更多