web-dev-qa-db-fra.com

Comment modifier un Ruby gem

Comment puis-je modifier un fichier * .gem existant? Je souhaite modifier un Rakefile dans une gemme afin qu'il puisse être compilé sur Windows.

37
aztack

Vous pouvez gem unpack, ajoutez votre modification, puis modifiez le gemspec si nécessaire et reconstruisez-le:

40
Michael Kohl

Téléchargez son code source dans un dossier séparé (peut-être depuis github). Modifiez ensuite votre Gemfile pour pointer directement vers la source afin de pouvoir l'éditer et tester vos modifications directement.

Par exemple, disons que vous souhaitez éditer la gemme secure_headers et que vous l'avez clonée dans ~/workspace/secureheaders. Ensuite, vous pouvez utiliser les éléments suivants dans votre Gemfile:

gem 'secure_headers', :path => "~/workspace/secureheaders"

Ensuite, modifiez simplement les fichiers source à l'intérieur de l'arborescence source et vous devriez pouvoir voir vos changements appliqués directement.

50
dionyziz

Les nouvelles versions de bundler vous permettent de le faire avec la commande suivante:

bundle open gem_to_edit

Cela ouvrira le code gem dans votre éditeur de texte par défaut.

(Astuce: si vous êtes sous Mac OSX/Linux, vous pouvez spécifier votre éditeur de texte par défaut en changeant la variable $ EDITOR. Dites que vous êtes sur bash, vous pouvez simplement ouvrir votre ~/.bash_profile et ajouter: export EDITOR='subl -w' pour configurer Sublime Text comme éditeur par défaut)

23
Americo Savinon

Peut-être qu'une façon plus acceptable et conviviale de faire cela serait de vérifier si la source de la gemme est disponible sur quelque chose comme github. Ensuite, créez un fork du code gem, apportez vos modifications et envoyez une demande d'extraction. Il y a de fortes chances que quelqu'un d'autre veuille aussi cette fonctionnalité et vous serez annoncé pour votre contribution.

15
Mike Farmer

Si vous manquez une spécification de gemme pour la gemme, extrayez-la avec cette commande:

gem spec my_gem --Ruby > my_gem.gemspec

Bien sûr, en remplaçant my_gem par le nom de gemme approprié. Modifiez le fichier résultant pour l'adapter (dans un exemple, j'ai dû supprimer une ligne qui a provoqué une erreur), et vous devriez être prêt à partir.

6
Gert Sønderby