Настройка unixodbc и freetds на OSX и Rails 2.3.x

Я пытаюсь настроить unixodbc на OSX (10.7.3), но похоже, что iODBC уже в пути.

Мой конфиг / database.yml:

development:
  adapter: sqlserver
  encoding: UTF8
  mode: odbc
  username: user
  password: passwd
  dsn: MY_DSN

ruby-obdc установлен и находится в Gemfile:

gem 'ruby-odbc', :require => 'odbc_utf8'

/usr/local/etc/freetds.conf:

[MY_SERVER]
host = host.bla.com
port = 1433
tds version = 8.0
client charset = UTF-8

/usr/local/etc/odbc.ini

[MY_DSN]
Driver=/usr/local/lib/libtdsodbc.so
Description=Sql Server Local
Servername=MY_SERVER
Port=1433
Database=my_database

Когда я бегу script/console и попробуйте получить доступ к любой модели:

ODBC продукта:: Ошибка: IM002 (0) [iODBC][Driver Manager] Не найдено имя источника данных и не указан драйвер по умолчанию. Драйвер не может быть загружен

Кажется, iODBC используется для подключения к базе данных, когда я хочу использовать unixodbc. Как я могу заставить мое приложение rails использовать unixodbc вместо iODBC?

3 ответа

Решение

Решено путем компиляции ruby-odbc для библиотек Homebrew. Это работает, если вы используете OSX:

gem install ruby-odbc -- --with-odbc-lib=/usr/local/lib

iODBC, поддерживаемый и поддерживаемый моим работодателем, входит в состав Mac OS X начиная с Jaguar (10.2.x).

Вам будет лучше обновить iODBC всеми последними исправлениями (Apple отстает от них), чем переходить на UnixODBC. Вы также можете найти некоторые преимущества в опубликованных нами документах Ruby+ODBC и Ruby-on-Rails.

Наконец, лучше всего хранить все ваши настройки ODBC в расположениях файлов по умолчанию для Mac OS X -

/Library/ODBC/odbc.ini
/Library/ODBC/odbcinst.ini
/Users/*/Library/ODBC/odbc.ini
/Users/*/Library/ODBC/odbcinst.ini

Вы можете создавать символические ссылки из любого места, где вы можете захотеть иметь эти файлы, например:

ln -s ~/Library/ODBC/odbc.ini ~/.odbc.ini

Использование Homebrew. Необходимо использовать:

gem install ruby-odbc -- --with-odbc-dir=/usr/local/Cellar/unixodbc/2.3.2

Я не заметил этого раньше, но в ответе Педро он имеет with-odbc-lib, не уверен, что это работает для его среды, но мне нужно, чтобы это было dir, потому что я продолжал получать проверку для sql.h... без ошибок.

Другие вопросы по тегам