将二进制gem部署到不同的平台

时间:2008-10-10 09:05:12

标签: ruby-on-rails ruby deployment gem

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

  • 该应用程序是在Windows上开发的,需要Windows二进制宝石
  • 将应用程序部署到Open Solaris共享服务器(Joyent)
  • 我无权在服务器上安装宝石
  • 对于非二元宝石,我只需在本地执行rake gems:unpack然后上传;这很好用。

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

5 个答案:

答案 0 :(得分:2)

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

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

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

如果你无法获得solaris的预打包二进制文件,你需要获得自己的solaris机器(使用Virtual PC,VMWare,VirtualBox等),用它来编译宝石,然后拉出二进制文件进行。

如果你实际上只有源代码可以在windows上运行(例如:你自己构建它,或者提供gem的人只设计它在windows上工作),你就搞砸了。您需要找到一个跨平台的替代品。

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

答案 1 :(得分:1)

请求共享服务器管理员为您安装gem。如果它们是来自信誉良好的域名的“标准”宝石,它真的不应该是那么大的交易,我的共享服务器提供商会一直这样做。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

Vendor everything.

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

祝你好运!

答案 4 :(得分:0)

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

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

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