Обычно для использования библиотек Ruby из командной строки я могу сделать что-то вроде:
ruby -rfastercsv -e 'code'
К сожалению, это не работает с rubygems, так как они не включены по умолчанию, и все, что rubygems делает для переопределенияrequire
, похоже, не работает с переключателем -r
, поэтому я вынужден сделать это вместо этого:
ruby -e 'require "rubygems"; require "fastercsv"; code'
Довольно раздражает однострочная - 42 символа служебных данных по сравнению с 13для библиотек без рубинов.Есть ли способ избежать этого?
Я написал этот скрипт, чтобы обойти проблему (он работает так, как допускается несколько -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