From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <4416A2E5.6080901@altlinux.org> Date: Tue, 14 Mar 2006 14:03:01 +0300 From: Mikhail Yakshin User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050905) X-Accept-Language: en-us, en MIME-Version: 1.0 To: ALT Devel discussion list Subject: Re: [devel] ruby-rake =?KOI8-R?Q?=C9_gems?= References: <4415833C.2050604@altlinux.org> <20060314080044.GL6144@pc152.sam-solutions.net> <441680C5.1080600@altlinux.org> <200603141045.57520.led@altlinux.ru> <20060314093853.GM6144@pc152.sam-solutions.net> <44169903.8030000@altlinux.org> <20060314103230.GN6144@pc152.sam-solutions.net> In-Reply-To: <20060314103230.GN6144@pc152.sam-solutions.net> Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.6 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Mar 2006 11:03:16 -0000 Archived-At: List-Archive: List-Post: Kirill A. Shutemov wrote: >>>Если есть такая возможность, то почему бы вообще не разобрать 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 - сложно. Во-вторых, смотрят не rubygems, а пакеты. >>Вообще на самом деле - есть еще одно - простейшее, в общем-то, решение: >>включить rubygems по умолчанию (ruby -rubygems). После этого начинают >>автоматически работать require 'пакет' как синоним require_gem 'пакет' >>(в дополнение к require 'файл') и остальные вещи, которые доступны в Gem >>enviroment. При засовывании 'rubygems' в RUBYOPTS - всё, по сути, что >>может не устраивать "противников" gem - это некий overhead в виде >>микросекунд, которые требует загрузка этого самого Gem environment. >>Может правда так сделаем и закроем вопрос? > > Помимо overhead'а с загрузкой rubygems, повышается вероятность словить > rubygems-специфичную багу. Это да. Но - см. мое другое письмо - для любителей чистого ruby без gems - можно просто вынести его в пакет у package manager'а - и если не пользуешься - не ставишь сам пакет rubygems - никаких "-rubygems" не имеешь. > Например, фактически, сильно увеличивается $: за > счёт rubygems директорий, что не способствует безопасности. Неправда ваша: $ irb irb(main):001:0> a = $:; require 'rubygems'; b = $:; p b - a [] => nil LOADPATH на самом деле не меняется. Хотя, конечно, начинают подгружаться модули gem - но - извините - разве не этого вы хотели, когда просили, чтобы require умел эмулировать require_gem? -- WBR, Mikhail Yakshin