Если возможно, используйте модуль Ruby DBI, и вместо того, чтобы пытаться заключить в кавычки ваши строки, используйте параметризованные подготовленные запросы, как это:
dbh = DBI.connect("DBI:Mysql:test:localhost", "testuser", "testpass")
sth = dbh.prepare("INSERT INTO people (id, name, height) VALUES(?, ?, ?)")
File.open("people.txt", "r") do |f|
f.each_line do |line|
name, height = line.chomp.split("\t")
sth.execute(nil, name, height)
end
end
Цитирование будет обработано для вас должным образом, а инъекции останутся в прошлом.
Edit: обратите внимание, что в этом примере показано, что nil передается в качестве первого параметра для execute (). Это соответствует первому? в запросе и переводится в «NULL» модулем DBI. Другие параметры аналогично правильно указаны и вставлены в запрос.