ruby-dbi
включает эмулятор для подготовки операторов, когда dbd его не предоставляет. Вы можете использовать его следующим образом:
require 'dbi'
st = DBI::SQL::PreparedStatement.new(nil, "Select * from table where x = ?")
st.bind(['test']) # => "Select * from table where x = test"
Вы можете увидеть алгоритм, который он использует здесь .
Редактировать: на основе комментариев ниже a, версия dbi 0.2.2
require 'dbi'
class Quoter ; include DBI::SQL::BasicQuote ; end
st = DBI::SQL::PreparedStatement.new(Quoter.new, "Select * from table where x = ?")
st.bind(['test']) # => "Select * from table where x = 'test'"
Соответствующий исходный файл здесь .