对于编写网络应用程序来说,Ruby on Rails是近年来的一个流行Ruby架构。一个原因就在于编写网络应用程序的时候,需要重复地编写同样的基础功能,而RailsKits的出现有效地缓解了这个问题。
\在进行应用程序的核心部分开发之前,开发者必须要完成一些东西。例如很多使用Ruby On Rails开发的程序需要实现认证、自动付款以及其他商业应用。RailsKits就是为了快速解决这样的问题而生。
\InfoQ获得了一个和RailsKits作者Benjamin Curtis直接对话的机会。我们希望从中能够了解到更多关于RailsKits的信息,例如RailsKits的概念、RailsKits可以提供的大量便捷的类型工具以及它们的使用。
\Robert Bazinet (RB):介绍一下你自己吧,Benjamin Curtis
\Benjamin Curtis (BC):我是一个西雅图的企业家,创业狂,还是一个Rails的开发者。我喜欢那些和在线商务有关的东西,无论它们是仅仅停留在概念上,还是处于开发中,或者正在后期宣传。我写过一些博客文章,内容是关于对比使用Rails以及没有使用Rails的网络开发,也使用过一些Rails的插件,我也同样热衷于为那些开源工程做自己的贡献,只要有时间的话 。我对在线商务的一个领域──电子商务尤其感兴趣,早期的Rails开发者已经构建了一个大型的网络商店解决方案,直到现在,我还在一直在构建电子商务的解决方案,例如NextProof,一个为专业的摄影者开发的解决方案,它包括自助的网络商店部件组合和网络商店的构建器。
\RB:什么是RailsKits?能介绍一下吗?
\BC:RailsKits是一个基础的Ruby On Rails应用,它能够帮助开发者快速地开发应用程序,这些应用程序通常包含一些功能,这些功能很普通,但是底层基础实现非常复杂,比如商务上的经常性结算。基本上,这些应用程序都需要解决一些问题,例如安全地存储信用卡号以及月度地结算,这些问题是相当地普通,并且不会给你的应用程序的特色带来任何更多价值,所以,为什么要花时间在重新发明轮子上呢?使用RailsKits吧,它为这些问题提供了解决方案,你需要将精力放回到那些激动人心的地方上了。
\RB:你是怎么想起要做RailsKits这样一个东西呢?
\BC:我是在编写了一系列的软件即服务(SaaS)的网络应用之后,产生了要写RailsKits的灵感。有段时间,我的主要工作是进行基于增值(免费+收费)模型B2B应用开发,在那些日子里,我发现每启动一个新的项目,我都是在重用之前项目已经写好的那些结算代码。随着我不断地重复着这些事情,我发现我真的不喜欢与这些代码打交道,这真是完全没有一点意思的事情,我估计肯定也有其他的开发者面临着这样烦人的问题。如果让他们选择,他们肯定愿意购买那些已经实现了经常性结算功能的代码──花小钱办大事,节省了时间不说,还能快速完成他们的程序。所以,我把在一些项目中改善过的结算部分抽取出来,然后打包并且出售。
\RB:RailsKits希望解决什么特殊问题?
\BC:我已经在之前提到了经常性结算和顾客订购管理是RailsKits专注解决的一些问题。近期发布的另一个RailsKits提供了构建地图程序的平台,在这个平台上,能够轻松地开发那些实现Google Map API和处理地址编码,自己的地图标注的应用程序。第三个RailsKits,也就是OpenID Kit,我将其免费地发布在网站上,这个工具提供Rails开发者一个起始点,来构建那些需要使用经典的用户名密码登录方式的应用程序,就像OpenID登录那样。所以,作为一个开发者,你不用担心什么OpenID API,甚至不用担心需要在应用程序中集成OpenID Rails插件,你要做的仅仅是下载这个工具然后使用已经存在的登录方法构建你的应用程序。
\RB:什么样的项目适合使用RailsKits呢?
\BC:如果你是需要构建一个有着一般化需求的应用程序,例如经常性结算,或者OpenID认证,那么这个应用程序就非常适合使用RailsKits作为起始点来进行开发。需要解决全新问题的应用程序并不推荐使用RailsKits。
\RB:你提供了哪些不同的RailsKits以及它们各自专注于什么?
\BC:第一个是SaaS RailsKits,它专注于为那些基于顾客订购的网络应用提供起始点。如果你想开发一个多房客管理网络应用来处理房客们月度用信用卡结算的账单,这个工具提供了你经常性结算的代码和为客户创建、升级以及降级帐号的功能。它同样提供了一个多功能的架构,能够完成多客户的隐私数据维护,以及实现产品计划中不同层次的限制,例如一个帐号中用户的数量,磁盘空间使用总量等。其他的工具包括了一个PayPal API的简单实现,一个OpenID的实现,以及一个为Radiant内容管理系统的扩展,这个扩展为一个基于Radiant的网站提供了仅仅向会员开放的功能。
\RB:你对这些工具提供什么样的支持呢?
\BC:我对那些关于在这些工具的基础上实现、定制、部署应用程序时产生的问题提供电子邮件支持。我也拥有一个客户的邮件列表,对他们提供其他问题的支持。
\RB:我们注意到这些工具是开源的,那么是基于哪个许可证呢?开发者如何才能合法地改进和分发这些工具。
\BC:在购买一个工具之后,你就能获得源代码,但是它并不是基于任意一个开源许可证的。这个工具的许可证允许你使用和修改代码,但是不能重新分发,除非你能使用这个工具作为起始点,为客户构建一个解决方案。这个时候你就能够和客户共享这些代码。
\RB:能不能给我们的读者举一些客户如何使用这个工具的例子?例如一些拥有自己站点的读者希望能够发现一些使用这些工具能够创造的有意思的东西。
\BC:第一个将要部署的用户应用程序NextProof使用了SaaS Rails Kit,这是一个为专业摄影师提供的电子商务平台。这也是我的客户项目,在这个项目中我重用了结算代码,这些代码是在Catch the Best首次编写的,我将这些代码抽取出来,放入这个架构中,这样就能在大量的项目中重用这些代码。Sifter是另外一个使用了SaaS Rails Kit的站点。
\RB:我注意到你使用你自己提供的一个工具构建了一个相当独特的程序,用来寻找本地可用的办公室。你能告诉我们一些有关这个工具以及这个程序的信息吗?
\BC:近期我启动了Map Rails Kit,这个工具旨在快速搭建一个Google Maps的混搭应用。它包含一个Google Maps API的实现,还有为开发者提供地址的地理编码,所以所有你需要做的就仅仅是提供一个地址的列表,然后工具会负责为这些地址生成地理编码并且为你把这些地址在地图上标注出来。使用这个工具,编写一个地图应用程序将是相当容易的一件事,我也在OfficeMapper中使用这个工具。当时我现在的办公室租期快到了,在寻找新的办公地点的时候,我编写了一个脚本,将Craigslist上的出租办公室地址列表下载下来并且使用这个工具将他们标记在地图上,现在我能够对我房子附近哪个办公地点可用一目了然。
\RB:你打算在将来提供哪些类型的RailsKits呢?
\BC:我有三到四个处于不同完成情况的工具,有些多数时候在不断被裁剪优化,然后为那些通用的实现问题提供一个良好的参考样例(例如PayPal Rails Kit),有些多数时候的朝着对于有着共同需求的Rails应用,能够成为一个候选的参考解决方案的目标不断被开发完善(例如SaaS Rails Kit)。我会在接下来的时间在RailsKits的邮件列表中发布一些通知(同样也会提供折扣!),所以务必确保已经在RailsKits web site的页脚下的订阅栏中订阅相关信息。
\更多关于RailsKits的信息请参见公司网站。
\查看英文原文:Discover RailsKits and Stop Writing Redundant Code。
\译者简介:杨晨,毕业于东北大学,曾就职多家大型互联网公司,从事研发及测试工作。对数据库和搜索引擎有深入了解,尤其擅长经典计算机科学理论,对历史学兴趣浓厚。
\志愿参与InfoQ中文站内容建设,请邮件至editors@cn.infoq.com。也欢迎大家到InfoQ中文站用户讨论组参与我们的线上讨论。