Posts tagged ‘freebsd’

Проблемы с работой ActiveRecord во FreeBSD (iconv)

Написал я небольшое приложение на Ruby с использованием движка Ramaze, оттестировал и решил что пора ставить его «в живую».
Поставить приложение решил на FreeBSD сервер, для работы нужен был gem ActiveRecord (куда без него). При запуске любой программы использующей ActiveRecord я получал такую ошибку:

i18n_interpolation_deprecation.rb:23:in `<class:Simple>': undefined method `alias_method_chain' for I18n::Backend::Simple:Class (NoMethodError)

Гугление по ошибке навело меня на страницу блога: http://john.vipvip.com/blog/?p=71, приведенный солюшн мне не подходил т.к. предпологалось что я ставил Ruby из портов, а у меня был Ruby 1.9-1 из сорсов с официального сайта.
Стало понятно главное – проблема в iconv модуле для Ruby, как оказалось в архиве Ruby есть такая папка ext/iconv/, но почему-то по умолчанию в файле ext/Setup, iconv закомментирован(за подробностями в файл README). Когда я убрал комментарии и еще раз попытался собрать Ruby iconv опять не собрался :(

Опять таки путем гугуления нашел следующие два треда:
http://groups.google.com/group/emm-ruby/browse_thread/thread/e4aa78aa9c1e4c9d
http://groups.google.com/group/emm-ruby/browse_thread/thread/e77c51cfd7589f51
То-ли FreeBSD`ный линковщик не добавлял кое-какие папки в опции сборки, то-ли Ruby не до конца сконфигурирован для сборки во FreeBSD, в общем родился маленький хак для нормальной сборки iconv + ruby. Редактируем файл ext/iconv/extconf.rb, после все «require» блоков добавляем две строки:

$LIBS << " -L/usr/local/lib "
$CFLAGS << " -I/usr/local/include "

Еще раз пытаемся собрать Ruby и сдеать make install, теоретически iconv должен собраться :)

P.S.

Возможно вам понадобится предварительно поставить iconv из портов:

cd /usr/ports/converters/iconv/
make install clean