[devel] ruby-rake и gems

Mikhail Yakshin =?iso-8859-1?q?greycat_=CE=C1_altlinux=2Eorg?=
Пн Мар 13 22:16:03 MSK 2006


Dmitry V. Levin wrote:

>>Если в двух словах - то это такой менеджер пакетов и стандарт упаковки 
>>всевозможных расширений для Ruby. Ближайшие аналоги - cpan для perl, 
>>pear для php, egg для python.

> Спасибо.
> 
> Если проводить аналогию с CPAN, то ни у нас, ни в дистрибутивах, за
> которыми я наблюдаю, не предпринимается попытка подменить CPAN'ом нативный
> менеджер пакетов.  CPAN просто используется как репозиторий, из которого
> пакуются пакеты.  При этом пакет perl-CPAN в Сизифе тоже есть, который
> теоретически позволяет пользоваться CPAN'ом в обход rpm.
> 
> Чем принципиально отличается подход к gems от подхода к CPAN?

Принципиально - ничем. Пакет perl-CPAN по той роли, которую он играет - 
полностью аналогичен пакету rubygems. Продолжая аналогии - /usr/bin/cpan 
- это /usr/bin/gem и т.п. Речь и идет о том, чтобы "оборачивать" взятые 
из репозитория gems пакеты в rpm, так же, как это делается для CPAN.

Разница начинается в деталях. Механизм gems - более высокоуровневый, чем 
CPAN. В gem включается информация о зависимостях, причем - например - 
зачастую не в декларативном виде, а в процедурном. В ruby есть метод 
"require", позволяющий подключить содержимое какого-то файла. В gems 
предлагается ему замена - метод "require_gem", который подключает нужные 
модули не пофайлово, а одной командой позволяет подключить сразу все, 
что нужно, причем еще запросить файлы из пакета какой-то определенной 
версии и т.п. автоматика.

Внутренняя структура пакета, соответственно, тоже более сложная: в 
базовой директории (/usr/lib/ruby/gems/1.8/gems/%name-%version) лежит 
обычно дерево из:

bin
configs
doc
examples
lib
test

и еще того, что создатель сочтет нужным туда положить. Очевидно, 
конечно, что это бардак - что документация и примеры лежат в %_libdir, 
но такой вот стандарт и если его рушить и, скажем, оторвать упаковку gem 
у какого-то одного пакета - надо будет рушить и все, его использующие.

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

-- 
WBR, Mikhail Yakshin AKA GreyCat
ALT Linux [http://www.altlinux.ru] [xmpp:greycat на altlinux.org]



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