2010-11-05 8 views
0

J'ai un tas de scripts ruby ​​dans un dossier qui est ajouté à $PATH et je pense que certains d'entre eux pourraient être utiles aux autres. Donc je veux les distribuer et le seul 'bon' moyen que je connaisse est rubygems (gem contenant uniquement binaire), il a un avantage très utile de versioning, mais aussi un inconvénient de temps d'initialisation (parfois il faut quelques secondes avant que le script commence courir). Existe-il des alternatives?Un moyen facile de distribuer le script ruby ​​

+1

Qu'entendez-vous par "temps d'initialisation"? – Jeremy

+0

@Jeremy: lance 'cat $ (qui rake)' - rubygems est initialisé et gem contenant binary est trouvé avant l'exécution du script. – tig

Répondre

2

La gemme est assez bonne pour cela. J'utilise gem à cette fin car il est très pratique d'installer et de mettre à jour.

1

Les gemmes sont construites pour cela. Je ne suis pas sûr de ce que vous pensez d'un gem, mais RubyGems est un référentiel comme PEAR pour PHP, aptitude pour Ubuntu, ou CPAN pour perl, sauf qu'ils contiennent des bibliothèques ruby.

Il n'y a aucun surcoût supplémentaire ou "temps d'initialisation" ajouté à vos bibliothèques ruby ​​en les rendant gems. RubyGems installe simplement votre bibliothèque - il ne fait rien d'autre. Les pierres précieuses sont bien pour ce genre de script Ruby

+1

Il ya des rubygems nécessitant des frais généraux et la recherche de gem contenant le script – tig

+0

@tig avez-vous comparé ceci pour déterminer si c'est un problème réel? Le temps est presque définitivement négligeable. Si c'est le cas, vous pouvez simplement ignorer les rubygems et demander manuellement le fichier. De cette façon, vous obtenez la facilité de distribution avec RG mais vous n'avez pas la surcharge de la recherche de chemin. – ryeguy

+0

Je ne l'ai pas référencé, mais j'ai remarqué sa présence (c'est pourquoi je sais comment fonctionne la bin de rubygems :), les frais généraux ne sont pas constants dans le temps, la première est lente, d'autres sont rapides). Que voulez-vous dire en sautant des rubygems? Je veux distribuer un script exécutable comme 'rake' ou' rails'. – tig

0

Pour générer rapidement une nouvelle gemme, essayez bundle gem.

Pour distribuer rapidement des gems sans utiliser rubygems.org, et d'une manière qui pourrait fonctionner pour un déploiement privé, consultez l'idée de microgems. Si vous ne pensez toujours pas avoir besoin d'envelopper ces gemmes, vous pouvez simplement ajouter le bit exécutable à vos scripts, ajouter des lignes shebang pour ruby ​​et supprimer l'extension .rb. Ensuite, partagez vos fichiers de script avec ceux qui les veulent.

Questions connexes