[devel] ruby модули

Igor Zubkov igor.zubkov на gmail.com
Пн Мар 28 15:55:36 UTC 2011


2011/3/28 Andrew V. Stepanov:
> Добрый день.
>
> У кого есть аргументы против того чтобы ликвидировать все ruby модули
> из Sisyphus ?
>
> У меня есть следующие доводы чтобы это сделать:
>
> 1. Каждый проект основанный на ruby имеет свои требования к окружению
> начиная от версия модулей, заканчивая самим интерпретатором.
>
>  * теже рельсы бывают:  2.3.x и 3.0

Это ещё не все версии рельс которые могут понадобится. Просто это две
ветки поддерживаются в текущий момент.

>  * разные интерпретаторы: ree, rubinius, jruby, ironruby

Все эти интерпретаторы кроме ree просто экзотика. REE обычно
используется в тяжёлых сайтах под капотом. Даже наш
http://packages.altlinux.org использует его.

>  * версии интерпретаторов: 1.8.7, 1.9.1, 1.9.2

1.9.1 умер. Пора про него забыть.

> собирая что одно мы покрываем только маленькую часть действующих
> проектов, если вообще что-то покрываем.

В текущий момент покрывается только одна задача, это redmine из
дистрибутива (ну или коробки). Больше ни для чего (сайто-хостинга) оно
не годится.

> 2. Модули довольно быстро устаревают для сизифа, и невозможно собрать
> универсальных модулей которые бы подходили для всех проектов.

Если эти gems можно поставить через rubygems и они будут работать, то
наличии их в дистрибутиве под вопросом. Зачем поддерживать его у нас
(тратя время и силы) если можно поставить из rubygems.

> 3. Rubу сообщество настойчиво предлагает использовать gems со своим
> ведением зависимостей.
>  А также:
> * bundler ( включен в rails 3.0 )

Вот bundler надо давно упаковать с Сизиф.

> * rvm - Ruby Version Manager

RVM это скорее больше для разработки нужен чем для всего остального.

> 4. Другие дистрибутивы не собирают все подряд модули ruby себе в репозиторий.
>
> Минусы:
>
> Мы теряем красоту при сборке native-модулей, которые собираются из .c
> .cc и требуют наличие gcc-c++  & devel пакетов.

gcc и devel пакеты можно потом и удалить. Или вообще собирать пакеты в
hasher на соседней машине с компилятором.

В идельном случае, я вижу ситуацию так:
1) у нас два ruby: ree & 1.9.2
2) на альтернативах
3) рабочий rubygems который позволяет ставить gems в систему
4) и ставить эти gems не в /usr/lib/ruby а в что-то типа /var/...
5) bundler из коробки
6) если у нас будет ree в дистрибутиве, то тогда уж и passenger надо
бы добавить (тогда можно будет перенести packages.a.o на
дистрибутивный ruby/passenger/nginx)

Это по части веб технологий и руби. Тут есть ещё десктопная часть. Я
думаю что она должна выглядеть так:
1) мы собираем только нужные джемы нужных версий
2) под 1.9.2 ruby
3) зависимость на rubygems запрещена

В принципе, так же можно собирать и веб софт типа redmine (только
фактически сейчас его поддерживать некому). Только фактически придётся
для него поддерживать свой собственный набор джемов.

-- 
Igor Zubkov
http://hi.im/ice


Подробная информация о списке рассылки Devel