AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

探索 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:253617
用户头像

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

关注

评论

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

[Maven进阶]分模块开发与设计

十八岁讨厌编程

maven 后端开发 9月月更

Qt|实现简单的分割窗口

中国好公民st

qt 分割 9月月更

爆火小游戏《羊了个羊》,我偏不玩

图灵教育

游戏开发 游戏设计 游戏史

利用flexible.js和VSCode插件cssrem进行可伸缩布局方案

海底烧烤店ai

前端 JavaScrip 响应式网页 9月月更

上海理工大学 x WeLink智慧迎新,2022届新生体验闪电式入学

科技怪咖

三分钟了解什么是时序数据库

阿泽🧸

时序数据库 9月月更

架构之美第一篇-概述

马说IT

架构 企业架构 架构模式 架构三要素 架构发展历史

带你玩转NProgress进度条

海底烧烤店ai

前端 JavaScrip 9月月更

一次线上事故,我顿悟了异步的精髓

勇哥java实战分享

爆火小游戏《羊了个羊》,我偏不玩

图灵社区

游戏开发 游戏设计 游戏史

主流开源消息队列对比与分析

穿过生命散发芬芳

消息中间件 9月月更

本地部署 VS 云服务

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

[SpringMVC]拦截器①(概述、入门案例)

十八岁讨厌编程

springmvc 后端开发 9月月更

[SpringMVC]拦截器②(拦截器参数、拦截器链配置)

十八岁讨厌编程

springmvc 后端开发 9月月更

gopher成长之路(五): 2年前和2年后同一个项目

非晓为骁

个人成长

Elasticsearch聚合的嵌套桶如何排序

程序员欣宸

9月月更

数学家的这些迷惑行为,最后都成了神操作

图灵教育

数学 数学教育 数学家

SaaS 的多版本销售该如何设计

产品海豚湾

产品经理 产品设计 SaaS B端产品 9月月更

计算机网络——编码与调制

StackOverflow

编程 计算机网络 9月月更

WeLink协作文档:办公协作再快一档

科技怪咖

2022-09-18:以下go语言代码输出什么?A:1;B:15;C:panic index out of range;D:doesn’t compile。 package main import

福大大架构师每日一题

golang 福大大 选择题

案例拆解:重要节日客情维护的礼品卡券应用

boshi

运营 礼品

力扣93 - 复原IP地址【回溯算法】

Fire_Shield

LeetCode 字符串 9月月更

uni-app黑马优购项目学习记录(一)

海底烧烤店ai

小程序 uni-app JavaScrip 9月月更

数学家的这些迷惑行为,最后都成了神操作

图灵社区

数学 数学教育 数学家

面试突击84:Spring 有几种事务隔离级别?

王磊

Java 面试

【字符串函数内功修炼】strcpy + strcat + strcmp(一)

Albert Edison

C语言 9月月更 strcpy strcat strcmp

Java中的Request和Response详解

共饮一杯无

Request 9月月更 Response 请求与响应

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