à utiliser les bibliothèques Ruby de ligne de commande que je peux faire quelque chose comme:Rubygems plus faciles à partir de la ligne de commande?
ruby -rfastercsv -e 'code'
Malheureusement, cela ne fonctionne pas avec rubygems, car ils ne sont pas activés par défaut, et tout ce rubygems fait pour remplacer require
n » t semblent fonctionner avec -r
interrupteur, donc je suis obligé de le faire à la place:
ruby -e 'require "rubygems"; require "fastercsv"; code'
assez gênant pour un one-liner - 42 caractères de tête par rapport à seulement 13 pour les bibliothèques non RubyGems. Y a-t-il un moyen d'éviter cela?
j'ai écrit ce script pour contourner le problème (il fonctionne comme -e "code"
multiples sont autorisés, et require
est idempotent donc il ne doit pas interférer avec -p
/-n
ou toute autre chose pour autant que je peux dire), mais il est tout plutôt laid, et je ne me dérangerait pas une solution plus élégante:
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
La question principale pourquoi 'Ruby -rubygems -rfastercsv' ne fonctionne pas, est que RubyGems remplace' 'require' et - r' n'utilise pas la méthode ruby 'require'. –