在 Windows 上运行 Ruby/Rails 的限制
-
03-07-2019 - |
题
在 RoR 的安装文档中,它提到在 Windows 上运行 Ruby on Rails 有很多限制,并且在某些情况下,整个库都不起作用。
这些限制有多严重?我是否应该始终默认使用 Linux 来编码/运行 RoR?Iron Ruby 是否有望修复这些限制,或者它们是操作系统本身的核心?
编辑 感谢您在 Linux 上安装和运行的答案,但我真的很想了解安装文档中引用的功能限制和非工作库 - 我试图找到评论的链接,但它被引用了在安装中,当我安装我认为的 msi 软件包时请阅读我的内容
编辑感谢您最近对 IronRuby 的引用,它确实是一个值得关注的项目,而且显然,由于它是一种 .NET 语言,因此如果它能够兑现承诺,那将是无价的。但最终,就我而言,我还是硬着头皮安装了 Ubuntu 服务器。
<偏见>我几年前就应该这样做</偏见>
解决方案
以下是 Windows 上 Rails 当前问题的概述:
- Ruby 和 Rails 在 Windows 上比在类 Unix 操作系统上慢。
- 一些 gem 和库无法在 Windows 上运行。
- 某些 Unix-isms 在 Windows 上不可用(例子).
- 该社区主要在 Mac 或 Linux 上(这是一个特别难处理的问题;当部落的其他成员在另一座岛上聚会、玩乐、相处融洽时,没有人愿意独自一人呆在一个岛上。社区很重要。似乎大多数从 Rails 开始的 Windows 开发人员很快就转向了 Mac 或 Linux。 然而, ,坚持不懈的 Windows Ruby 用户小社区非常友好、专注且知识渊博 - 去打个招呼.)
请注意,由于以下人员的巨大努力,以下大部分建议现已过时。 Ruby安装程序 团队致力于为 Windows 上的 Ruby 带来稳定性、兼容性和性能。我不再需要使用 VirtualBox,这充分说明了 Windows 上的 Ruby 已经取得了多大的进步。
如果您想了解更多技术细节,请阅读以下内容。:
- Windows 版 Ruby - 第 1 部分
- Windows 是 Ruby 支持的平台吗?我猜不会
- 测试适用于 Windows 的新一键式 Ruby 安装程序
- 仍在 Windows 上玩 Ruby
- 与 Luis Lavena 聊天(Windows 上的 Ruby)
最后一篇的选择引用是:
秋田铁路: 最明显的事情是,任何带有 C 扩展的 Gem,如果没有适用于 Windows 的正确二进制文件,都会失败。尝试执行 shell 命令将会失败,RubyInline 也会失败。还有什么?
路易斯·拉韦纳: 呵呵,这只是冰山一角
话虽如此,我不认为在 Windows 上使用 Rails 进行开发 也 痛苦。在大多数情况下,使用 Ruby 是一种乐趣。我会避免使用 InstantRails,因为坦率地说,使用一键式安装程序正确安装 Ruby,然后执行 gem install rails
. 。如果您需要 Apache 和 MySQL, 瓦姆普 是一个不错的选择,尽管如果您只是坚持使用 Mongrel 和 SQLite,那么这些也不是必需的。
我最近开始做的就是跑步 虚拟盒子 使用与部署服务器密切镜像的 Ubuntu Server 实例。我将网络驱动器映射到 Ubuntu 服务器,然后直接在虚拟机上编辑并运行代码。它几乎不使用任何内存(目前使用约 43MB;与 Firefox 相比,Firefox 使用约 230MB),而 Rails 实际上比在 Windows 上本地运行表现更好。另外,您可以相对安全地试验虚拟服务器。这是一个非常好的设置,我强烈推荐它。
最后,这里有一些针对 Windows 用户的 Ruby/Rails 博客:
其他提示
我发现在Windows上使用 Instant Rails 启动和运行开发环境真的很棒简单。特别是在使用 Netbeans 或 Radrails 作为IDE。
不到10分钟的工作。
那些挣扎的人发现了什么问题?
没人提到 Bitnami RubyStack 了吗?我和RadRails一直在使用它多年。包括Apache,MySQL / Postgre,phpmyadmin,git等。可选的Ruby 1.9.2 / Rails 3.0b。您也可以在VM中运行RubyStack的Ubuntu风格,但我还没有尝试过。
我已经在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宝石。 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可能会开始工作。
http://railsinstaller.org/ 上有一个打包的安装程序,值得一试。
就我个人而言,我发现在Windows上运行Ruby + Rails是件小事。从下载到浏览到我的第一个'HelloWorld'应用程序花了我15分钟。我甚至没有打扰任何InstantRails的东西。
随后我不能说我在Windows下遇到任何报告的Gems速度问题或问题。
这些人也为Visual Studio添加了一个很好的Ruby开发人员:
当我最后在Windows上摆弄Rails时,我使用了Instant Rails并发现它是一个相当痛苦的过程,除了缺少Instant Rails的更新(从网站的外观仍然有一点点一个问题,因为即时Rails 2.0使用ROR 2.0,而最新版本是2.1)。您也可以查看这个问题因为它提到了许多其他方法可以轻松地在Windows上运行RoR。
您可以通过Windows选项获取所有内容并进行安装,例如 Instantrails :
但是,我尝试让同事在Windows上运行的个人经验是,这是一个非常痛苦的经历。你应该能够让大部分(如果不是全部)运行,但要准备好花一点时间来捣乱(并且感到沮丧)。
YMMV
我可能会建议使用Linux或Mac进行rails开发(但是我对Windows有些偏见,所以你可能需要花一点时间来研究它。)
如果你被困在Windows上,那么选择是让虚拟服务器运行Linux / BSD / what-have-you。
它还解决了许多其他问题(允许您轻松尝试多种服务器配置等)。
如果你无法摆脱Windows使用VMware并运行某种形式的Linux(ubuntu很受欢迎)。你的No.1限制将是编译的宝石,在Windows上不能很好地播放。
大多数教程都假设你使用某种形式的* nix,当你感觉到疼痛时,就会开始超越基本的脚手架。图像处理,全文搜索甚至一些数据库适配器将只在* nix上运行或者很难设置。
大多数Web主机也运行Linux,最好在与主机相同的平台上进行开发,以避免部署问题。
通常,Rails性能是Windows上的一个问题。
就部署设置而言,您可以在FCGI中运行Rails或使用mongrel(并设置Apache或IIS作为代理)。 mod_rails( http://www.modrails.com )是今天Rails的最佳部署选项,但不是'在Windows上运行。
您可能会发现使用Windows上的JRuby在您想要的任何JVM环境(tomcat,J2EE服务器等)中运行Rails会更加幸运。
IronRuby还没有在生产环境中运行Rails,但最终它的目标是在任何ASP.NET环境(IIS)中运行Rails。
你可以使用Cygwin和它的Ruby版本。这摆脱了关于编译宝石无法在Windows上工作的争论 - 我已经成功地编译了很多宝石。
在Windows下运行的最大限制是很多东西都超级慢。
看 这个线程. 。供讨论。
像“脚本/控制台”和运行 rake 任务这样的简单事情在 Windows 上花费的时间是 Linux 或 Mac 上的 5 倍。
其他限制是:
- Vista 上没有 IE6。
- BackgroundRB 和许多其他基于 C 的 gem 不能在 Windows 上运行。
- 没有乘客
我自己不是铁轨开发者,但我认为这可能会引起人们的兴趣。微软发布了IronRuby 1.0,它是在.NET平台上运行的Ruby版本,显然比Windows上的官方Rails实现快
。对于加速,您可以尝试我的装载机调速器上部(帮助导轨在打瞌睡时跑得更快): https:// github的.com / RDP / faster_require 结帐spork,在打瞌睡
RailsIntaller的替代方案是 RailsFTW 。 Ruby <!>放大器; Rails更新。