[devel] ruby-rake и gems

Kirill A. Shutemov =?iso-8859-1?q?kas_=CE=C1_altlinux=2Eru?=
Вт Мар 14 13:32:30 MSK 2006


On 13:20 Tue 14 Mar, Mikhail Yakshin wrote:
> Kirill A. Shutemov wrote:
> 
> >>>Ну можно сделать симлинки или тривиальные rerequires. Примерно такие:
> >>>
> >>>/usr/share/ruby/vendor_ruby/1.8/activerecord.rb ->
> >>>/usr/lib/ruby/gems/1.8/gems/activerecord-1.11.1/lib/active_record.rb
> >>>
> >>>Это даст возможность делать обычный require. Это решит вашу проблему?
> >>
> >>Если эти симлинки будут "опакечены" и не будут появляться "битые" симлинки, то 
> >>ИМХО выглядит не так уж и страшно...
> > 
> > Если есть такая возможность, то почему бы вообще не разобрать gems по
> > косточкам и не разложить в правильные директории (/usr/share/ruby/vendor_ruby/1.8/ 
> > и т.п)? Оставить в /usr/lib/ruby/gems/1.8 только то, что нужно для
> > require_gem (я так понял, что это /usr/lib/ruby/gems/1.8/specifications/*).
> 
> Например - потому, что gem тогда как package manager не будет его
> видеть. Есть масса штуковин, которые работают уже в этой инфраструктуре.
> Они ищут файлы по путям, отсчитывая их от базовый директории gem'а. Они
> обращаются к Gem'у (а у него довольно развесистый API), с тем, чтобы
> что-то узнавать о пакетах и потом действительно пользоваться этой
> информацией. Автоматические тесты, что есть в gem'е - они будут искаться
> именно в поддиректории test и т.п., причем, учитывая, что один пакет
> зависит от другого - важно и их взаимное расположение и т.д. и т.п.

Пропатчить rubygems, чтоб он смотрел в правильные директории это очень
сложно?

> 
> Вообще на самом деле - есть еще одно - простейшее, в общем-то, решение:
> включить rubygems по умолчанию (ruby -rubygems). После этого начинают
> автоматически работать require 'пакет' как синоним require_gem 'пакет'
> (в дополнение к require 'файл') и остальные вещи, которые доступны в Gem
> enviroment. При засовывании 'rubygems' в RUBYOPTS - всё, по сути, что
> может не устраивать "противников" gem - это некий overhead в виде
> микросекунд, которые требует загрузка этого самого Gem environment.
> Может правда так сделаем и закроем вопрос?

Помимо overhead'а с загрузкой rubygems, повышается вероятность словить
rubygems-специфичную багу. Например, фактически, сильно увеличивается $: за
счёт rubygems директорий, что не способствует безопасности.

-- 
Kirill A. Shutemov				Belarus, Minsk
E-mail:	k.shutemov (AT) sam-solutions.net
JID: kas (AT) altlinux.org
ICQ: 152302675

Бэкпорты -- это контрибы обновлений к зафиксированному
в алюминии с поликарбонатом (и соответственно на ftp)
дистрибутиву.
		-- mike in community@
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 191 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20060314/2944b214/attachment-0001.bin>


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