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?
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