Установка драйвера PostgreSQL на Ruby. Под Windows. Облом-с

Устанавливаю драйвер (адаптер, интерфейс) для доступа из Ruby к PostgreSQL из под Windows.

Версии:
Ruby 1.9.2
PostgreSQL 8.4
pg 10.0.1

Делаю:
"gem install pg"
Находит и скачивает сам.
Ругается на то что хочет скомпилировать, а не может.

Оказывается он собирается скомпилировать библиотеку, для подключения к PostgreSQL. Значит, нужен DevKit.

Качаю DevKit c http://rubyinstaller.org/downloads/
Распаковываю.
Запускаю dk.rb
Смотрю параметры, запускаю с параметрами по очереди
Прописываю DevKit\bin и DevKit\mingw\bin в переменную среды окружения PATH

Запускаю еще раз.
Ругается. Рекомендует запускать с ключикам with-pg-config
Говорит, что не может найти файлы.
"checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header"

Замечаю, что "libpq-fe.h" есть в подкаталоге "include" каталога "C:\Program Files\PostgreSQL\8.4", где установлен сервер PostgreSQL

Мапирую каталог с PostgreSQL на короткий путь без проблелов:
subst X:\ C:\Program Files\PostgreSQL\8.4

Запускаю с ключиками:
gem install pg -- --with-pg="X:\"

Так же ерунда.

А вот если изменить наклон в пути и написать как принято в Unix
gem install pg -- --with-pg="X:/"
то все компилируется.

В программе Ruby пишу require 'pg'
Ругается, что хочет '1.9/pg_ext.so'
"C:/Ruby192/lib/ruby/gems/1.9.1/gems/pg-0.10.1/lib/pg.rb:10:in `require': no such file to load -- 1.9/pg_ext (LoadError)"

Копирую 'pg_ext.so'
Из "C:\Ruby192\lib\ruby\gems\1.9.1\gems\pg-0.10.1\lib\"
в "C:\Ruby192\lib\ruby\gems\1.9.1\gems\pg-0.10.1\lib\1.9\"

Наблюдаю:
"C:/Ruby192/lib/ruby/gems/1.9.1/gems/pg-0.10.1/lib/pg.rb:10:in `require': 126: �� ������ ��������� ������. - C:/Ruby192/lib/ruby/gems/1.9.1/gems/pg-0.10.1/lib/1.9/pg_ext.so (LoadError)"

Видимо, хочет DLL от PostgreSQL или от MinGW или от Ruby DevKit...
Скопировал их все в каталог куда положил "pg_ext.so". Не получается подключить модуль pg из Ruby....

С помощью Visual Studio 2010 Express C++ быстренько создаю приложение для Windows (не консольную, а оконную, это важно).
В WndProc в ветку, выводящую диалог "About" ("О программе") вставляю:
"h = LoadLibrary(TEXT("pg_ext.so"));
if (h != 0)
DialogBox..."
Таким образом, диалог "О программе я увижу только в том случае, если DLL нормально загрузится.

Копирую полученный в Visual Studio тестовый файл в каталог с pg_ext.so

Убираю оттуда все ранее скопированные DLL.

Для чистоты эксперимента делаю командный файл:
set PATH=C:\
test.exe
То есть убираю из путей все и запускаю его.

Ткнувшись в меню "О программе" фактически пытаюсь загрузить DLL pg_ext.so. Поочередно выясняю, что для этой DLL нужны:
"libpq.dll", копирую ее из "C:\Program Files\PostgreSQL\bin", еще раз проверяю через меню "О программе".
Выясняю, что еще нужно: msvcrt-ruby191.dll от Ruby и много файлов от PostgreSQL:
comerr32.dll, k5sprt32.dll, libeay32.dll, libintl-8.dll, ssleay32.dll, gssapi32.dll, krb5_32.dll, libiconv-2.dll.

После того, как я их скопировал в каталог с "pg_ext.so" моя тестовая программа на С++ написанная смогла загрузить DLL "pg_ext.so". Ruby же как ругался так и ругается.

Компьютерные вопросы: 
2002-2012 ©