From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <44169903.8030000@altlinux.org> Date: Tue, 14 Mar 2006 13:20:51 +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> In-Reply-To: <20060314093853.GM6144@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 10:20:51 -0000 Archived-At: List-Archive: List-Post: 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 по умолчанию (ruby -rubygems). После этого начинают автоматически работать require 'пакет' как синоним require_gem 'пакет' (в дополнение к require 'файл') и остальные вещи, которые доступны в Gem enviroment. При засовывании 'rubygems' в RUBYOPTS - всё, по сути, что может не устраивать "противников" gem - это некий overhead в виде микросекунд, которые требует загрузка этого самого Gem environment. Может правда так сделаем и закроем вопрос? -- WBR, Mikhail Yakshin AKA GreyCat