2
通常使用Ruby库的命令行我可以这样做:从命令行更简单的rubygems?
ruby -rfastercsv -e 'code'
不幸的是这并不RubyGems的工作,因为他们不是默认启用的,不管RubyGems的不覆盖require
没有按” Ť似乎与-r
开关工作,所以我不得不这样做,而不是:
ruby -e 'require "rubygems"; require "fastercsv"; code'
很烦人的一个班轮 - 42个字符的开销只有13非RubyGems的库进行比较。有什么办法可以避免这种情况?
我写这个剧本来解决这个问题(它可以作为多个-e "code"
是允许的,并且require
是幂等的,因此不应该与-p
/-n
或其他任何东西,只要我可以告诉干扰),但它的所有比较难看,我也不会介意一个更优雅的解决方案:
args = []
until ARGV.empty?
arg = ARGV.shift
if arg =~ /\A-r(.*)\Z/
args << "-e" << "require 'rubygems'; require '#{$1.empty? ? ARGV.shift : $1}'"
else
args << arg
end
end
exec "ruby", *args
的主要问题,为什么'红宝石-rubygems -rfastercsv'不工作,是RubyGems的覆盖'require'和' - r'不使用ruby'require'方法。 – 2010-06-24 18:18:50