2009-11-24 5 views
0

Serait-il possible de surcharger le "require" par défaut en ajoutant un code de téléchargement et d'installation automatique pour toute inclusion manquante (à condition que l'inclusion manquante soit publiée en tant que gemme ruby).Ruby: installation de gem juste à temps?

Ce qui ne fonctionnerait pas dans les situations où Ruby n'est pas interfacé avec une coque. Mais je pense que ce serait une idée intéressante.

Existe-t-il un tel mécanisme aujourd'hui?

Editer:
Partie supprimée à propos de la vérification du mot de passe. Je viens de vérifier et l'installation de gem ne semble pas m'obliger à taper mon mot de passe.

Répondre

1

Vous pouvez pirater la méthode require de manière à ce que les gemmes soient installées lorsqu'une tentative est faite à require, mais vous n'aurez toujours pas accès à la gem nouvellement installée dans le processus en cours, car l'index gem doit être rechargé.

Je comprends les intentions mais je pense que l'exercice ne vaut peut-être pas le coup. Lors de l'installation d'une nouvelle gem, la gem sera installée dans GEM_HOME.

0

Si ce n'est pas inscriptible alors il va essayer dans le répertoire .gem de la maison de l'utilisateur (sur * NIX au moins).

Vous pourriez certainement écrire ceci. En un sens, le rake gems:build de Rail est juste ceci. Juste pas sur demande.

Mais, je recommanderais contre cela. Vous pourriez rencontrer des problèmes de build, de versioning, de dépendance et de réseau. Et probablement aussi des problèmes de sécurité. PS: Francis Hwang a fait quelque chose de lié il y a longtemps, mais seulement comme un besoin, pas un besoin de gemmes.

http://fhwang.net/2005/11/01/urirequire-I-got-yer-Web-2-0-right-here

0

Une meilleure option serait d'utiliser bundler et distribuer les gemmes nécessaires à l'application.

Il est également très simple d'écrire un script pour amorcer l'installation de pierres précieuses si vous ne voulez les distribuer avec votre code (en utilisant le paquet d'installation/commandes de contrôle)