I've been playing around with Arel this week (actually outside of Rails) and found an issue with the clone implementation. I've added a patch and a testcase here:
So... a) How can I get my bugfix merged - who should I talk to, what else do you need?
b) What's the best forum for discussing / getting involved in Arel development.
There are no tests for this, so I'm not sure what it actually does.
Is "placeholder" in the SQL BNF?
>So... a) How can I get my bugfix merged - who should I talk to,
>what else do you need?
>b) What's the best forum for discussing / getting involved in Arel
>development.
For now, we should discuss here. I'll open a mailing list soon, and we
can move there eventually.
There are no tests for this, so I'm not sure what it actually does.
Is "placeholder" in the SQL BNF?
No, I don't imagine so. The idea with the placeholders is that you could have one query which serializes differently to SQL (or through any of the visitors) depending on the dynamic value of the placeholders. The effect I want (and am using in my local repo) is not to have to define the values of all the query terms at query build time:
@placeholders = { :username => "bob" }
query = @users.project(@users[:id]).where(@users[:name].eq(Arel::Nodes::Placeholder.new(:username, @placeholders)))
query.to_sql => "SELECT `users`.`id` FROM `users` WHERE `users`.`name` = 'bob'"
@placeholders[:username] = "adam"
query.to_sql => "SELECT `users`.`id` FROM `users` WHERE `users`.`name` = 'adam'"
Make sense? Sound useful? I'm not sure that's the most elegant API in the world (in fact I'm pretty sure it's not), but I'm open to suggestions as to pretty ways to achieve the same thing.
So... a) How can I get my bugfix merged - who should I talk to,
what else do you need?
b) What's the best forum for discussing / getting involved in Arel
development.
For now, we should discuss here. I'll open a mailing list soon, and we
can move there eventually.
Did anyone have any strong feelings about the following feature - is it
something that it's going to be possible to get included (possibly in a
prettied up form), or am I better forking / monkey-patching?
The idea with the placeholders is that you could have one query which
serializes differently to SQL (or through any of the visitors)
depending on the dynamic value of the placeholders. The effect I want
(and am using in my local repo) is not to have to define the values of
all the query terms at query build time:
@placeholders = { :username => "bob" }
query = @users.project(@users[:id]).where(@users[:name].eq(Arel::Nodes::Placeholder.new(:username, @placeholders)))
query.to_sql => "SELECT `users`.`id` FROM `users` WHERE
`users`.`name` = 'bob'"
@placeholders[:username] = "adam"
query.to_sql => "SELECT `users`.`id` FROM `users` WHERE `users`.`name`
= 'adam'"
Make sense? Sound useful? I'm not sure that's the most elegant API in
the world (in fact I'm pretty sure it's not), but I'm open to
suggestions as to pretty ways to achieve the same thing.
Oh, there isn't. The question is really whether the current Arel library
is still useful as a standalone library (could be made useful without
too much bloat) or whether Arel-standalone should be developed separately.
Hello, Arel is a Relational Algebra for Ruby and if I can recall correctly at the moment it uses ActiveRecord’s connection adapters. It would be useful to make it standalone but since it’s quite dependent on Rails, any unconvincing use-cases for Rails app will never be appreciated. In that case, making it independent of Rails sounds like the first logical step.
Understood. Bit of a shame, but I can understand the point of keeping it pure. I'll create a separate Gem that wraps / extends Arel and includes the additional functionality.