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

如何减少从不同数据源获取与整合信息的复杂性,是当前的一项挑战。然而,.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

你可能感兴趣的:(通过Ambition实现Ruby抽象数据查询)