Мне нужно подключиться к довольно старой базе данных Sybase из Ruby.
Я закончил тем, что использовал jRuby, только потому, что не мог заставить работать любой способ подключения к Sybase из MRI;Если есть способ, который действительно работает, и он не сумасшедший, установить соединение Sybase для старой версии Sybase, это было бы здорово.Но я бью головой о стену на некоторое время, я думаю, что нет.
Так что я завелся в jRuby, чтобы использовать JDBC.У меня есть файл JDBC.jar, который работает для подключения к Sybase.
Я знаю, что я могу написать необработанный код JDBC в jRuby, как в Java, используя API JDBC.Но JDBC API - это такой медведь, с которым приходится работать, помимо прочего, он очень плох в экранировании / защите от инъекций (или, может быть, я просто не понимаю, как правильно его использовать, см. «Трудно работать», по крайней мере, длямне).
Существуют ли библиотеки Ruby 'wrapper', которые будут работать в jRuby в качестве оболочки для произвольного JDBC?Если бы я мог заставить его работать с ActiveRecord, это было бы круто, но на самом деле не обязательно.
Я использовал пакет Ruby 'DBI', который действительно работал отлично.Но пакет Ruby DBI, кажется, не поддерживается, и мне становится все труднее его использовать;есть несколько запросов на получение (https://github.com/erikh/ruby-dbi/issues), связанных с тем, чтобы заставить его работать в соответствии с 1.9.3, отключением предупреждений об устаревании и т. д., на которые не обращают внимание коммиттеры. Я отправил электронное письмо владельцу проекта github, чтобы спросить, есть ли шансих приняли, и они получили ответ «Нет», состоящий из одного слова, без объяснения причин. Не совсем уверен, что происходит.
Итак, каковы мои варианты подключения к Sybase из Ruby с помощью jRuby JDBC илиДругой?
(В соответствии с требованиями ниже, я добавлю, что я использую RHEL 5 в качестве ОС. Но если ответ «когда вы установите FreeTDS, вы можете сделать X, Y и Z как этот»Мне, вероятно, удастся установить FreeTDS самостоятельно. В прошлом я был в тупике даже ПОСЛЕ установки FreeTDS на хост).