Affichage du code source d’un bijou

Ruby dabbler / newbie here qui n’est pas familier avec l’écosystème, excusez-moi si c’est une de ces questions super douteuses.

Existe-t-il un moyen d’afficher tous les fichiers et / ou le code source installés par une gemme? C’est-à-dire que je viens de courir

$ gem install sass 

Et le joyau de sass fait maintenant partie de mon système local

 $ gem list --local ... sass (3.1.16, 3.1.2) ... 

Je veux savoir ce que la commande d’ gem install mise sur mon système. Existe-t-il une commande que je peux exécuter pour voir tous les fichiers installés par la gem?

Après quelques commandes googling, man gem et gem help commands , j’ai découvert la commande de contents .

$ gem contents sass

Cependant , lorsque je lance cette commande avec le sass gem susmentionné, j’obtiens les résultats suivants

 .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/engine_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/functions_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/extend_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/logger_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/css2sass_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/conversion_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/script_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util/subset_map_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util/multibyte_ssortingng_scanner_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/callbacks_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/importer_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/css_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/scss_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/rx_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/script_conversion_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/less_conversion_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/cache_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/plugin_test.rb .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/sass .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/sass-convert .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/scss 

Cependant, cette liste semble incomplète car je sais qu’il existe des fichiers dans

 .../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.2/lib/ 

Pourquoi le contents n’affiche-t-il pas les fichiers de lib ?

Est-il possible pour un installateur de gem d’installer des fichiers en dehors du dossier gems?

Y a-t-il une commande qui peut montrer tout ce qui est installé par une gemme?

gem a une commande de décompression: http://guides.rubygems.org/command-reference/#gem-unpack

 gem unpack rake ls rake-0.4.3/ 

Il y a deux très bonnes façons de le faire. Il y a un autre bijou qui vous permet d’ouvrir la gem et de l’éditer. Ce bijou s’appelle gem-open

 gem install gem-open 

puis

 gem open sass 

Une autre méthode consiste à générer vos propres documents.

 gem rdoc sass 

Vous pouvez alors regarder vos documents par

 gem server 

De plus, si vous utilisez rvm, vous pouvez taper rvm info et afficher l’emplacement GEM_HOME . Ce sera l’endroit où se trouve tout le code source de vos gemmes.

 cd $GEM_HOME cd gems/sass-3.1.2/ 

Mettre à jour:

C’est la façon dont je le fais surtout maintenant, lorsque vous utilisez un bundler.

 cd $(bundle show sass) 

Ce sera la version de sass dans votre Gemfile.

J’ouvre habituellement une gem en exécutant cette commande depuis la console

 EDITOR= bundle open  

Le répertoire lib / que vous avez mentionné est pour la version 3.1.2 de la gem; gem contents sans --version seulement une version ( il semble choisir la version la plus récente, mais je ne peux pas vérifier que ceci est toujours vrai ). Quelle sortie obtenez-vous pour les gem contents --version 3.1.2 sass ?

Vous pouvez également utiliser simplement renommer le fichier .gem en .tar et extraire en tant qu’archive posix. Le code source se trouve dans le dossier lib . Voir https://blog.srcclr.com/extracting-ruby-source-code-from-gem-packages/ pour plus de détails.

En plus du gem contents , une autre commande que vous pourriez trouver utile est l’ gem environment . Si vous avez plusieurs chemins pour vos installations de gemmes, ils seront tous listés sous le label “GEM PATHS”.