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

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

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

有帮助吗?

解决方案

  • 该应用程序是在 Windows 上开发的,需要 Windows 二进制 gem
  • 该应用程序将部署到 Open Solaris 共享服务器 (Joyent)

您确实意识到无法在开放的Solaris 上运行Windows 二进制文件。Windows实际上与solaris完全不同......

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

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

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

如果您能告诉我们会有帮助 哪个 您正在谈论的宝石,因此人们可以帮助找到更具体的解决方案,并准确解释发生了什么。

其他提示

请求共享服务器管理员为您安装 gem。如果它们是可从信誉良好的域获得的“标准”宝石,那么这确实不是什么大问题,我的共享服务器提供商一直在这样做。

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

供应一切。

这有两件事。它使您的应用程序可以在不依赖于系统安装的 gem 的情况下进行部署,其次它将特定版本的 gem 冻结到您的应用程序。因此,如果其他人从您的 SCM 工具中检查这一点,他们将不会出现版本不匹配的情况,并且可以正常启动和运行。

祝你好运!

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top