= Epoxy - bind data to queries for any query language.

Let me hit ya with some science!

   # numbered binds
   ep = Epoxy.new("select * from foo where bar=?")
   binds = %W[foo]
   bound_query = ep.quote { |x| "'" + binds[x] + "'" }
   "select * from foo where bar='foo'"

   # named binds
   binds = { :name => 'Lee', :age => 132 }
   ep = Epoxy.new("select * from people where name=?name and age=?age")
   bound_query = ep.quote(binds) { |x| "'#{binds[x]}'" }
   "select * from people where name='Lee' and age='132'"

   # mix them!
   binds = { 0 => "Age", :name => 'Lee' }
   ep = Epoxy.new("select * from people where name=?name and age=?")
   bound_query = ep.quote(binds) { |x| "'#{binds[x]}'" }
   "select * from people where name='Lee' and age='Age'"

Epoxy handles:

* ?<name> for named binds
* ? for numbered binds
* ?? for a *real* question mark
* '?' for a *real* question mark
* comments, weird quoting styles (look at the "holy shit" test for examples)
* not telling you how to quote your data. This solution works for any query language and any database.

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Erik Hollensbe. See LICENSE for details.