2009-05-26 6 views
7

Je dois exécuter un tas de scripts ruby ​​que j'ai écrits sur un serveur auquel je n'ai pas accès sudo.
Sur ma propre machine, j'ai installé un tas de gemmes en utilisant 'sudo gem install ..' et les ai utilisées dans mon code ..
Y at-il un mécanisme qui me permettrait d'utiliser ces gemmes sans les installer formellement sur une télécommande machine?Utiliser une gemme sans l'installer

Répondre

3

Vous pouvez les installer dans un répertoire utilisateur: http://docs.rubygems.org/read/chapter/3#page83

Cela ressemble à ce que vous permet d'installer les pierres précieuses partout où vous voulez.

+1

juste FYI, la page liée ne fonctionne plus –

6

Vous pouvez, mais c'est difficile.

D'abord, installez-les en utilisant l'option --install-dir, à savoir:

gem install gem_name --install-dir /some/directory/you/can/write/to 

Deuxièmement, assurez-vous que vous avez un fichier .gemrc dans votre répertoire qui ressemble à ceci:

gemhome: /some/directory/you/can/write/to 
gempath: 
- /some/directory/you/can/write/to 
- /usr/local/lib/ruby/gems/1.8 

gemhome est où les gemmes devraient regarder d'abord en cherchant une gemme. gempath est tous les chemins qu'il devrait vérifier lors de la recherche d'une gemme. Donc, dans le .gemrc ci-dessus, je dis à mon code de regarder d'abord dans le répertoire local, et s'il n'est pas trouvé, vérifiez le répertoire gem système. Troisièmement, sachez que du code - même du code dans les gemmes - peut faire des suppositions sur l'emplacement des gemmes. Du code peut modifier par programme gempath ou gemhome. Vous devrez peut-être «modifier» dans votre propre code.

Il n'y a pas beaucoup de documentation (lire: non) sur la façon de faire cela - la meilleure façon de le comprendre est de lire les tests qui sont inclus avec la source RubyGems. Voici comment je pirater les chemins de pierres précieuses dans une tâche de râteau pour pointer vers ma version gelée de Capistrano:

Gem.use_paths(Gem.dir, ["#{RAILS_ROOT}/vendor/gems"]) 
    Gem.refresh # picks up path changes 
+0

je fais en fait tout le temps (tous mes bijoux installer dans ~ /.gem) et n'ont pas encore rencontré de code se conduisant mal, ni trouver cela si difficile. Mais YMMV. – rampion

+0

Intéressant, je me demande si ~/.gem est un cas particulier. J'essaie généralement de référencer les gemmes installées dans une application. –

Questions connexes