我有一个需要部署的 Rails 应用程序。以下是事实:
- 该应用程序是在 Windows 上开发的,需要 Windows 二进制 gem
- 该应用程序将部署到 Open Solaris 共享服务器 (Joyent)
- 我无权在服务器上安装 gems
- 对于非二进制宝石,我可以简单地在
rake gems:unpack
本地做一个然后上传;这很好用。
所以我的问题是,如何将我需要的二进制gem 放到我的生产服务器上?
我有一个需要部署的 Rails 应用程序。以下是事实:
rake gems:unpack
本地做一个然后上传;这很好用。所以我的问题是,如何将我需要的二进制gem 放到我的生产服务器上?
- 该应用程序是在 Windows 上开发的,需要 Windows 二进制 gem
- 该应用程序将部署到 Open Solaris 共享服务器 (Joyent)
您确实意识到您不能在打开的 solaris 上运行 Windows 二进制文件。Windows实际上与solaris完全不同......
如果 gem 来自第三方,您可以下载其他人制作的用于 solaris 的预打包二进制版本。然后,您可以将它们放在供应商目录中并从那里加载它们,而不是安装 gem。
如果您无法获得用于 solaris 的预打包二进制文件,则需要获得自己的 solaris 机器(使用 Virtual PC、VMWare、VirtualBox 等),使用它来编译 gem,然后将二进制文件提取出来。
如果您实际上只有可在 Windows 上运行的源代码(例如:您自己构建了它,或者提供 gem 的人仅将其设计为在 Windows 上运行),那么您就完蛋了。您将需要找到一个跨平台的替代品。
如果您能告诉我们您在谈论哪些宝石,这将有所帮助,这样人们就可以帮助找到更具体的解决方案,并准确解释发生了什么。
请求共享服务器管理员为您安装 gem。如果它们是来自知名域的“标准”gem,那真的应该没什么大不了的,我的共享服务器提供商一直都在这样做。
二进制宝石是真正的问题。对于所有其他 gem,您可以使用该vendor/gems
目录(仅适用于 Rails 2.1+)。
这有两件事。它使您的应用程序可部署,而不依赖于系统安装的 gems,其次,它将特定版本的 gem 冻结到您的应用程序。因此,如果其他人从您的 SCM 工具中检查出来,他们就不会出现版本不匹配的问题,并且可以正常运行并正常运行。
祝你好运!
您可能必须使用交叉编译器来定位在 Windows 上运行的 Solaris。
构建交叉编译器通常是一个困难且容易出错的过程。我以前做过,复杂性不适合胆小的人。理想情况下,您会找到可以访问 Solaris 构建机器的人并让他们为您创建二进制文件。
如果您必须使用交叉编译器路线,我怀疑解决方案将是安装 cygwin 并使用其构建工具来创建 cygwin 托管的 solaris 交叉编译器。我建议查看crosstool 项目,该项目将为您提供为您处理一些细节的脚本。