在Windows上运行Ruby/Rails的限制

81

在RoR的安装文档中提到,在Windows上运行Ruby on Rails会有很多限制,在某些情况下,整个库都不能正常工作。

这些限制有多糟糕?我应该总是选择Linux来编码/运行RoR吗?铁路宝石(Iron Ruby)是否能解决这些限制,还是它们是操作系统本身的核心问题?

编辑 感谢您关于在Linux上安装和运行的回答,但我真的想了解文档中提到的功能限制和无法工作的库 - 我正在尝试查找评论的链接,但我认为它是在我安装msi软件包时在安装read me中提到的。

编辑 最近谈到的铁路宝石(IronRuby)确实是一个值得关注的项目,并且显然是一个.NET语言,如果它能够实现承诺,那么它将非常有价值。然而,对我来说,最终我决定接受事实,安装了Ubuntu服务器。

<bias>我早应该这样做了</bias>


没有限制。每个问题都有解决方法或替代方案。 - Chloe
16个回答

102
以下是关于在Windows上使用Rails的当前问题概述:
  • 相比Unix-like操作系统,Ruby和Rails在Windows上运行速度较慢。
  • 一些宝石和库无法在Windows上使用。
  • 一些Unix-isms在Windows上不可用(例如)。
  • 社区大多数人使用Mac或Linux操作系统(这个问题特别难处理;当一个人孤岛时,其他部落在另一个岛上狂欢、玩乐和融洽相处。社区很重要。似乎大多数从Rails入手的Windows开发人员很快就会转向Mac或Linux。然而,那些坚持使用Windows Ruby的小型社区非常友好、专注和知识渊博 - 去打个招呼吧)。

请注意,由于RubyInstaller团队在将稳定性、兼容性和性能带给Windows的Ruby方面做出了巨大的努力,以下大部分建议现在已经过时。我不再需要使用VirtualBox,这说明Ruby在Windows上的进展有很大的提升。

如果您想了解更多技术细节,请务必阅读以下内容:

  • 继续在Windows上使用Ruby
  • 与Luis Lavena聊天(关于在Windows上使用Ruby)
  • 从最后一个连接中选择引用的话,其中一段很有意思:

    AkitaOnRails:最明显的问题是任何需要C扩展且没有Windows平台二进制文件的Gem都会失败。尝试执行shell命令也会失败,RubyInline也是如此。还有其他问题吗?

    Luis Lavena: 呵呵,这只是冰山一角。

    虽然如此,在Windows上开发Rails并不算太痛苦。大多数情况下,使用Ruby都是一种乐趣。我会避免使用InstantRails,因为坦率地说,使用一键安装程序正确地安装Ruby,然后运行gem install rails同样简单。如果你需要Apache和MySQL,WAMP值得考虑,但如果只使用Mongrel和SQLite就足够了,甚至不需要它们。

    最近我开始使用VirtualBox,安装了一个与部署服务器非常相似的Ubuntu Server实例。我将网络驱动器映射到Ubuntu Server,然后直接在虚拟机上编辑和运行代码。它几乎不占用内存(当前仅使用约43MB;相比之下,Firefox使用约230MB),而且Rails实际上比在Windows本机上运行更好。此外,你可以在相对安全的环境中实验虚拟服务器。这是一个非常好的设置,我强烈推荐。

    最后,以下是一些针对Windows用户的Ruby/Rails博客:


    2
    多么完整的答案,却是如此令人沮丧的现实...但我想这就是为什么我花了数小时在Windows上运行我的VirtualBox http://compileyouidontevenknowyou.blogspot.com/2008/12/virtual-box-210-virtual-host-adapter.html。感谢您的回答:我会使用我的VirtualBox。 - Dan Rosenstark
    4
    不要被听起来沮丧的语气所误导;当然也不会像使用Java或.NET那样令人沮丧。开个玩笑,开个玩笑。 ;) - Charles Roper
    1
    很酷,查尔斯,我仍然惊讶于我们如此依赖平台……大概还需要50年吧。 - Dan Rosenstark
    1
    不得不重新安装Windows,不想再在我的Windows电脑上运行Rails。因此,我安装了VirtualBox,创建了一个虚拟的Ubuntu服务器,设置了共享文件夹,以便两者都可以访问我的Rails代码,安装了Ruby和Rails,并在VirtualBox中设置了端口转发,以便我可以从Windows访问Rails应用程序。 - Guy C
    1
    我使用Windows进行开发,而Rails运行在Ubuntu虚拟机上。实际上我并不是“使用”这个虚拟机,而是通过SSH和共享文件夹从Windows控制一切。这是我的详细记录的设置:http://www.chetane.com/2012/09/11/hybrid-windows-linux-vm-rails-development-environment/ - Chetane
    显示剩余2条评论

    6
    我发现在Windows上使用Instant Rails搭建开发环境非常简单,特别是在使用NetbeansRadrails作为IDE时。少于10分钟就可以完成。
    那些遇到困难的人发现问题在哪里?

    5

    有人提到Bitnami RubyStack吗?我已经使用它多年了,与RadRails一起使用。包括Apache,MySQL / Postgre,phpmyadmin,git等。可选Ruby 1.9.2 / Rails 3.0b。您还可以在虚拟机中运行Ubuntu版本的RubyStack,但我尚未尝试。


    5
    我已经在Windows PC上开发Rails几年了,当我刚开始时安装没有遇到真正的问题。然而,最近我重新构建了我的机器,并且很难让One-Click Ruby安装程序和最新版本的Gems正常工作。所以这是我尝试过的:
    选项1:运行Linux虚拟机
    我非常钦佩Charles Roper的想法,在Linux虚拟机中运行Rails,这是我最初选择的路线。一切都进行得很顺利,我一直在budanters.blogspot.com上记录它。但是,我一直在努力从Windows主机访问MySQL服务器(在Linux虚拟机中)。
    选项2:使用jRuby
    我最近安装了Windows版本的NetBeans 6.5 Ruby捆绑包,不知道的情况下,它会安装JRuby和Rails gems。该IDE具有安装Gems的UI,现在我已经在我的开发环境中恢复了旧应用程序。
    更新2009年11月
    我现在在Windows上使用Netbeans 6.7,在整个过程中我非常满意。唯一的缺点是它安装了JRuby 1.2,我需要手动安装JRuby 1.3才能使某些工作正常(我不记得是什么),而且我完全无法使用Capistrano或Vlad the Deployer进行部署。Vlad使用Open4,它与JRuby不兼容。
    更新2010年5月
    Netbeans 6.8带有JRuby 1.4,因此不再需要手动安装JRuby 1.3。另外,似乎在JRuby 1.5中Open4现在可以工作,这意味着Vlad可能会开始工作。

    1
    只是想补充一下,运行Ubuntu虚拟机的好选择是使用Vagrant。您可以在Windows上进行开发,并与Ubuntu虚拟机共享文件,然后可以“vagrant ssh”到您的虚拟机并在那里运行命令,例如“rails server”。 - carlosvini

    4

    3

    我个人认为在Windows上运行Ruby + Rails非常容易。从下载到浏览器,再到我的第一个“HelloWorld”应用程序只花了我15分钟。我甚至没有使用InstantRails。

    后来,我并没有遇到任何关于Windows下报告的速度问题或Gems相关的问题。

    这些家伙还为Visual Studio提供了一个不错的Ruby开发者附加组件:

    http://www.sapphiresteel.com/


    如果你从未在OS X或*nix下使用过Rails,那么你可能不会注意到速度差异。只有当你对比这两者时,差异才变得明显。 - Charles Roper
    也许吧,但我的观点是,没有什么明显的缓慢让我想到“这运行得像只狗一样”。 - Kev
    你是如何在Windows上安装Ruby和Ruby on Rails的? - user2603796

    2
    当我最后一次在Windows上使用Rails时,我使用了Instant Rails,并发现这是一个相当痛苦的过程,除了Instant Rails缺乏更新(从网站的外观来看,这仍然是一个小问题,因为Instant Rails 2.0使用ROR 2.0,而最新版本是2.1)。你也可以查看这个问题的答案,因为它提到了许多其他轻松运行RoR的方法。

    安装Rails 2.1并不困难,只需运行命令'gem update rails'即可。 - RichH
    @Paul Wicks 你真的是说“痛苦”吗? @RichH 我记得我需要一个“gem update -system”(我按照实用程序员的beta Ruby on Rails书上的说法做了),但我同意这并不难升级。 - Steve Bosman

    1

    1
    Ironruby 似乎已经沉睡了一年多了。 - reto

    1
    你可以使用Cygwin和它的Ruby版本。这样就可以避免关于编译后的gem在Windows上无法工作的争论 - 我已经成功地通过这种方式编译了很多gem。

    1

    你可以选择在Windows上安装Instantrails等选项来完成所有的设置和安装:

    然而,我个人的经验是,在Windows上让同事们开始使用编程是一件相当痛苦的事情。虽然你应该能够让大部分(如果不是全部)的东西运行起来,但要准备花费一些时间来折腾(并感到沮丧)。

    你的情况可能会有所不同。

    我可能会建议使用Linux或Mac进行Rails开发(但我对Windows有点偏见,所以你可能需要谨慎对待这个建议)。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接