BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

通过Ambition实现Ruby抽象数据查询

| 作者 Sebastien Auvray 关注 0 他的粉丝 ,译者 高昂 关注 1 他的粉丝 发布于 2007年9月28日. 估计阅读时间: 2 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

如何减少从不同数据源获取与整合信息的复杂性,是当前的一项挑战。然而,.NET已经拥有了LINQ,Ruby却没有相似的解决方案。虽然已有一些DSL项目使用Rub语言进行查询,却并非以Ruby的语法形式进行查询。

Chris Wanstrath为此设计了新的解决方案:Ambition。Ambition利用了ParseTree来处理解析树,并将纯Ruby查询转换成SQL查询(在目标数据库为关系型数据库时),最终您可以使用Ruby编写如下的查询语句:

User.first
# which will translate into "SELECT * FROM users LIMIT 1"
User.select { |u| u.karma > 20 }.sort_by(&:karma).first(5)
# which will translate into "SELECT * FROM users WHERE (users.`karma` > 20)
# ORDER BY users.karma LIMIT 5"

Chris最初打算以Rack项目为目标的,但在他研究了LINQ之后,便转变了原先的目标。

我们的注意力从Rack转向了LINQ。更确切地说,我们不想仅是支持其他的ORMs—我们期望Ambition成为面向SQL、LDAP、XPath的查询语言。Ambition的1.0版本将是后端无关的(backend-agnostic)。或许因此我们将考虑把项目的名称改为Hubris?时间会说明一切。

感兴趣的读者可以使用Git在如下地址获取最新的程序源代码:git://errtheblog.com/git/ambition

查看英文原文:Abstracting Data Query in Ruby with Ambition

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT