我现在有这个脚本。
def r(this)
require this
puts "#{this} is now loaded."
rescue LoadError
puts "The gem '#{this}' is missing."
puts "Should I install it? [y/n]"
data = gets
if data =~ /yes|y/i
puts "Installing #{this}, hold on."
if `gem install #{this}` =~ /Successfully/i
load this
end
else
puts "Okey, goodbye."
end
end
这使得动态需要库成为可能。
像这样:r "haml"
.
问题是安装后我无法加载gem。
使用load this
or load File.expand_path("~/.irbrc")
不起作用。
这是一个例子。
>> r "absolutize"
The gem 'absolutize' is missing.
Should I install it? [y/n]
y
Installing absolutize, hold on
LoadError: no such file to load -- absolutize
>> require "absolutize"
LoadError: no such file to load -- absolutize
>> exit
$ irb
>> require "absolutize"
=> true
有没有办法即时重新加载 rubygems 或 irb?
我没有尝试,但我想你可能正在寻找Gem.clear_paths http://rubygems.rubyforge.org/rubygems-update/Gem.html#method-c-clear_paths
重置目录和路径值。下次请求 dir 或 path 时,将从头开始计算这些值。这主要由单元测试用来提供测试隔离。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)