From: Tom Werner Date: 2007-11-14T16:39:54+09:00 Subject: Re: How to reload available rubygems in a long running process ------=_Part_4373_20668260.1195025995574 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 11/13/07, Eric Hodel wrote: > > On Nov 12, 2007, at 10:48 , Tom Werner wrote: > > In my Ruby monitoring framework, god, I have the ability to load > > configuration files into an already running god instance. This > > allows the user to create new watches without having to restart > > god. There is a problem, however, if the config file to be loaded > > requires a gem that was installed *after* god was started. The > > rubygems system discovers and caches the available gems when it is > > initially required, ignoring any gems that are installed after that. > > > > I have not been able to find an easy way to have rubygems reload > > its cache of available gems from a running Ruby program. Does > > anyone know of a decent way to accomplish this? > > Gem.clear_paths > > This does not appear to work. Here is my test procedure: # --> cheat gem is NOT installed require 'rubygems' begin require 'cheat' rescue LoadError # --> so this gets executed puts 'fail' end gets # --> program pauses and I install cheat gem # sudo gem install cheat Gem.clear_paths begin require 'cheat' rescue LoadError # --> require STILL fails even though Gem:all_load_paths # now contains the cheat gem's directory puts 'fail' end -- Tom Preston-Werner * Libraries: Chronic (chronic.rubyforge.org) God (god.rubyforge.org) Fuzed (fuzed.rubyforge.org) * Site: rubyisawesome.com ------=_Part_4373_20668260.1195025995574--