2010-04-06 4 views
3

Je voudrais gifler tout dans le fournisseur/gems/gems/**/lib sur le chemin de chargement. J'ai un moyen de le faire, mais il me semble juste maladroit. En ce moment, je le fais via:

base = File.expand_path(File.join(File.dirname(__FILE__), "..", "vendor", "gems", "gems"))
libs = File.join(base, "**", "lib")
Dir.glob(libs) { |lib| $LOAD_PATH.unshift lib}

Je suis sûr qu'il ya une meilleure façon de le faire.

+0

btw. http://refactormycode.com est un excellent site pour ce genre de questions. vous pourriez être en mesure de trouver des idées alternatives là-bas. – rubiii

+0

Cool site - Je vais devoir vérifier. – bergyman

Répondre

2

Je pense que la configuration du chemin de base via File est correcte. mais vous n'avez pas besoin de parcourir la liste des répertoires pour les mettre dans le $LOAD_PATH. vous pouvez utiliser unshift et développer le tableau.

libs = File.expand_path("../../vendor/gems/**/lib", __FILE__) 
$LOAD_PATH.unshift *Dir.glob(libs) 
+0

Un peu plus court pour simplement splat l'appel Dir.glob, yup. Je n'y ai pas pensé. Mais finalement je me demande s'il y a un moyen de le faire sans l'appel Dir.glob du tout? – bergyman

+0

Je ne pense pas qu'il y ait une bien meilleure façon. il suffit d'obtenir chaque chemin et de le placer dans le $ LOAD_PATH. C'est le problème et l'utilisation de Dir.glob semble être une bonne solution. – rubiii

Questions connexes