RailsInstaller 简化了 Rails 在 Windows 上的安装过程

  • Rob Bazinet
  • 张龙

2011 年 2 月 2 日

话题:.NETRubyRuby on RailsDevOps语言 & 开发

RailsInstaller向 Windows 开发者提供了一种便捷的方式以轻松、快速创建 Ruby on Rails 3 应用。到目前为止,Windows 开发者需要自己搭建好 Ruby、RubyGems、Rails 以及 SQLite 才能开始创建 Rails 应用。多亏了来自Engine Yard的 Nic Williams 博士及其团队,现在一切都变得简单异常。

目前的 RailsInstaller 提供了如下功能:

  • 通过向导的轻松安装
  • Rails 3.0.3
  • Ruby 1.8.7——p330
  • SLQite 3.7.3
  • Git 1.7.3.1
  • DevKit

InfoQ 有幸采访到了 Nic Williams 博士以深入了解 RailsInstaller 项目及其现在和未来将提供的功能。

提到 RailsInstaller,人们的第一个想法就是既然可以自己安装每一个组件,为何还需要 RailsInstaller 呢。

Rails 新手需要一键安装的软件包尽快上手。如果你的朋友对 Ruby on Rails 感兴趣,那么你可以直接给他个 URL,剩下的东西他自己就可以轻松搞定。如果你正在进行 Rails 培训课程,那么如何让所有学生都能尽快上手呢?这正是 RailsInstaller 的目标所在。用于帮助开发者快速上手 Rails 的一站式解决方案。

既然项目的大部分都是由 Engine Yard 的员工所资助的,我们想知道项目的开发是 Nic Williams 个人的事情还是 Engine Yard 公司的事情:

我们热爱 Ruby,我们也热爱使用 Ruby 的开发者。在 Engine Yard,我们都是 Ruby 用户,如果每个开发者,每个咨询师都能从 Java/PHP/.NET 转到 Ruby on Rails 进行开发,那将是多么好的一件事啊。

如果我们能简化这种转换,那么这些开发者或许就会真的转换过来。这正是我们所期望的事情。

Engine Yard 承诺支持开源并对 Rails 社区有所贡献,这个项目也是 Engine Yard 承诺的一部分。

这种项目由很多内容构成,我们很难独自完成一切。在被问到都有谁参与到了项目中,Nic 博士提到了开源社区的一些知名人物:

Wayne E Seguin 和 Luis Lavena 构建了 Windows 1.0.0 版。Wayne 完成了两周的 sprint,Luis 则作为指导。

Wayne 因其成功的RVM项目(Ruby Version Manager,Ruby 版本管理器)而名声大噪,并于最近回到了 Engine Yard。如果你不知道,那么应该清楚现在 Ruby 的版本不止一个,但 RVM 可以跨越多个平台保持 Ruby 的简单性与一致性,这样你就可以安装和使用任意的 Ruby 版本了。RVM 用户只需选择需要使用的 Ruby 即可。

Luis 则是 Ruby on Windows 的教父级人物。他曾经独自开发出了一键式的安装器(One-Click Installer),后来又创建了后继者——新的RubyInstaller(“RubyInstaller for Windows“)。在过去 5 年多的时间内,Ruby 的一键式安装器已经有 500 多万的下载量了,不可思议吧。

Ruby 社区的很多人都知道 Ruby 1.9.2 是最快、最棒的 Ruby 实现。RailsInstaller 带有 Ruby 1.8.7,我们想知道为什么会带有这个版本呢:

RailsInstaller 安装器有两个目标(本周我们发布了一个 Windows 版本的)——人们能否在 5 分钟内上手 Rails 应用开发;是否使用了每个 Ruby 开发者都在使用的基本工具?第一个目标是让用户喜欢上 Rails 与 Ruby;第二个目标是让他们能够融合到现有的、极富激情的 Ruby 社区。

这种想法指导着我们的决策。这也是 Windows 版本的安装器为何选择 Ruby 1.8.7 而非 Ruby 1.9.2 的原因所在。在当今的 Windows 领域,用户如果使用 Ruby 1.8.7 会获得更好的体验,Bug 也更少。Ruby on Rails 与 Ruby 新手并不需要知道这些。因此我们替这些新用户做了决定,将最棒的 Ruby 工具打包在一起并随 RailsInstaller 安装器一同发布。

如果 RailsInstaller 用户喜欢上了 Ruby,了解了 Ruby 1.9.2 并问”我怎么没有使用 Ruby 1.9.2?“并且想要尝试一下,那么他们就可以去做了。他们会下载 Ruby 1.9.2、下载 DevKit、安装所有的 Gems,发现 Bug,并成为 Ruby 社区的一员。

有一天,我们会携带 Ruby 1.9.2 的。也许是 Rubinius 或 JRuby。无论哪个都会给用户最棒的体验。

但目前,我们只希望用户能够爱上 Ruby,爱上 Rails。

InstantRails 已经成为 Windows 开发者上手 Ruby on Rails 的可靠环境。InstantRails 提供了一个图形用户界面以帮助不熟悉 Ruby 或 Rails 所用的命令行工具的 Windows 用户。Nic 博士谈到了关于 RailsInstaller 未来的思考以及是否应该向开发者提供图形用户界面:

这里我想说的是,InstantRails 审核者 Rob Bazinet 也是 InstantRails 最后一个维护者,他与我就 InstantRails 2011(现在叫 RailsInstaller)谈了很久。这是一个说不清楚的问题。

从 2005 年到 2008 年,我们在使用 InstantRails,这也是我 2005 年开始 Rails 开发时所用的工具。但遗憾的是,InstantRails 在 2007 年曾停止开发了,最后一个发布版中带有 Ruby 1.8.6,它与 Rails 3 不兼容。InstantRails 的代码基也太老了 ——我相信它可以追溯到 2005 年之前——我们认为开始新的代码基是最快的途经了。

谢谢你 Rob,你更新了 InstantRails 站点,加上了一个指向 RailsInstaller 1.0 的链接,将其作为 InstantRails 的“下一版本”。

我还不太确定对 GUI 到底采取何种处理方式。构建一个独立的 GUI?只是为了 RailsInstaller for Windows 的用户?还是再为 OS/X 创建一个 RailsInstaller GUI?还是与现有的流行 IDE 集成,还是与 Windows 或 OS/X 用户在开始学习 Rails 时所用的文本编辑器集成?或许我们应该将注意力放在与 Visual Studio 和 Xcode 的集成?

这个问题问的好,但我现在还没有明确的答案,不好意思。

知道如何在 Linux 上运行 Rails 的开发者应该知道 Apache Web Server 的复杂细节,但 Windows 开发者对这方面就了解甚少了。既然开发者主要使用 IIS,那么讨论就应该转移到部署与托管策略上了:

RailsInstaller 之所以优秀,主要在于它关注于“知道这些事情的人”与这些话题之间的关系。比如说,能够让 IIS 和 Rack(Rails 应用低层次的接口)协作工作

Brian Hogan 列出了 Windows 用户在使用 Ruby 时可能感兴趣的问题

  • “如何将其与 ActiveDirectory 搭配使用”?
  • “如何使用目前正在使用的所有.NET 程序库”?
  • “如何将其与 SharePoint 集成”?
  • “最后,他们会问关于 IIS 的问题”。
如果我们能提供 Windows 部署的解决方案,那么就可以将其打包到 RailsInstaller 当中或是作为扩展包。

在被问到如何能让开发者参与到项目的开发当中时,Nic 博士说到:

安装器与 Web 站点都是开源的,托管在 GitHub 上。可以在 Pivotal Tracker 上查看到 RailsInstaller for Windows 的发布计划

对于任何项目,特别是新项目来说,重要的是能为开发者提供支持,让他们能够提出问题、汇报 Bug 以及提出建议。

RailsInstaller Google Group目前的关注点放在了开发者的讨论上。

发现的大多数“Bug”最后都会被再次汇报给每个单独的打包项目,比如 RubyInstaller、Core Ruby、Rails、Bundler 等等。系统向用户提供了一个入口点,用户可以提出自己的问题,社区可以为用户提供解决方案。希望这能对 Rails 新手提供帮助。

如果我们能够成功地选择并将条目打包到安装器中,那么我们基本就不会遇到与 Bug 相关的问题了,但这只是我的梦想而已。

发布 RailsInstaller,获得所有的积极反馈。这是我的梦想。

请感兴趣的读者访问RailsInstaller 站点以了解关于该项目的更多信息以及上手指南。

查看英文原文:RailsInstaller Provides Easy Rails on Windows Installation

.NETRubyRuby on RailsDevOps语言 & 开发