写点什么

探索 RailsKits:停止编写重复冗余的代码

  • 2008-10-23
  • 本文字数:3099 字

    阅读完需:约 10 分钟

对于编写网络应用程序来说,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 应用开发,在那些日子里,我发现每启动一个新的项目,我都是在重用之前项目已经写好的那些结算代码。随着我不断地重复着这些事情,我发现我真的不喜欢与这些代码打交道,这真是完全没有一点意思的事情,我估计肯定也有其他的开发者面临着这样烦人的问题。如果让他们选择,他们肯定愿意购买那些已经实现了经常性结算功能的代码──花小钱办大事,节省了时间不说,还能快速完成他们的程序。所以,我把在一些项目中改善过的结算部分抽取出来,然后打包并且出售。

RBRailsKits 希望解决什么特殊问题?

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 中文站用户讨论组参与我们的线上讨论。

2008-10-23 00:252325
用户头像

发布了 90 篇内容, 共 32.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

入门Python之后还是搞不定面试、做不来项目,推荐读读这本书

图灵教育

Python 编程 程序员

幸运哈希值竞猜游戏系统开发方案

薇電13242772558

区块链 哈希值

团队在线协作文档工具推荐

小炮

团队协作 文档协作

Moonbeam 漏洞赏金计划,最高奖金 100 万美金!

One Block Community

区块链 波卡 Moonbeam

TiDB 6.0 发版:向企业级云数据库迈进

PingCAP

Redis Stream 专为队列而生,别再用 List 实现队列了

码哥字节

Redis Stream Redis 数据结构 4月月更

招聘 | 多家区块链项目招募开发者!

One Block Community

区块链 招聘 波卡

如何使用阿里云容器服务保障容器的内存资源质量

阿里巴巴云原生

web前端培训-ES6 教程:全面了解 ES6 模块

@零度

前端 ES6

深度学习,如何选择GPU服务器?

Finovy Cloud

人工智能 深度学习 GPU服务器

解决两大难题,TDengine 助力亿咖通打造自动驾驶技术典范

TDengine

数据库 tdengine 物联网

解读谷歌Pathways架构(一):Single-controller与Multi-controller

OneFlow

人工智能 机器学习 深度学习 架构 深度学习框架

MacOS 系统如何把PHP版本升级到 7.4或者更高的版本呢,今天教程来啦

CRMEB

CESS:波卡生态去中心化数据存储的未来

One Block Community

区块链 云存储 去中心化存储 CESS

真的是最全的一致性hash环讲解了

Java工程师

Java 架构 分布式 算法 hash

CityClub 北京站马上开始!线下沙龙等你来!

InfoQ写作社区官方

热门活动

如何在云端重塑内容生产?来看这场虚拟人主持的发布会

阿里云视频云

阿里云 音视频 视频剪辑 智能生产 视频云

3分钟了解Vue开发小程序的技术原理

FinClip

FinClip 与 uniapp:轻应用平台与前端开发框架

FinClip

EMQ 映云科技 & 阿里云推出“一站式工业数字化解决方案”,共建产业数据湖生态圈

EMQ映云科技

阿里云 开源 物联网 IoT emq

恒源云(Gpushare)_新功能上线,你确定不进来看看?

恒源云

GPU服务器 GPU算力

运维人必知必会的Zabbix核心命令

博文视点Broadview

写作社区 2 周年,全员狂欢燥起来!

InfoQ写作社区官方

热门活动 InfoQ写作社区2周年

大数据培训-Hive高频面试题分享

@零度

hive 大数据开发

2022年3月国产数据库大事记-墨天轮

墨天轮

数据库 TiDB 国产数据库 KingBase gbase8a

波卡动态 | Moonbeam 上第一个3D NFT项目宣布合作

One Block Community

区块链 以太坊 polkadot 波卡 Moonbeam

领域驱动设计(DDD)理论与方法

Java工程师

Java 程序员 互联网 DDD 架构设计

Java培训-怎样通过 Bucket4j 提供速率限制

@零度

JAVA开发 Bucket4j

基于云服务器ECS搭建网页游戏《浪剑天下》

阿里云弹性计算

玩转ECS 游戏服务器

一文搞懂Netty发送数据全流程 | 你想知道的细节全在这里

bin的技术小屋

网络编程 Netty Java’ 4月月更 Reactor多线程

OneBlock | 区块链人才聚集地,面向全球的Substrate 开发者社区

One Block Community

技术社区 #区块链#

探索RailsKits:停止编写重复冗余的代码_Ruby_Robert Bazinet_InfoQ精选文章