2012-05-04 21 views
42

Ruby dabbler/newbie aquí que no está familiarizado con el ecosistema, así que le pido disculpas si esta es una de esas preguntas súper duh.Viendo el código fuente de una gema

¿Hay alguna manera de ver todos los archivos y/o el código fuente instalados por una gema? Es decir, que acaba de ejecutar

$ gem install sass 

y la gema Sass ahora es una parte de mi sistema local

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

Quiero saber lo que el comando gem install puso en mi sistema. ¿Hay algún comando que pueda ejecutar para ver todos los archivos instalados por la gema?

Después de googlear un poco, man gem y gem help commands, descubrí el comando contents.

contenidos $ joya Sass

Sin embargo, cuando ejecuto este comando con la gema Sass antes mencionado, consigo los siguientes resultados

.../.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_string_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 

Sin embargo, esta lista parece incompleta, ya sé que hay archivos en

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

¿Por qué no contents muestran los archivos de lib?

¿Es posible que un instalador gem instale archivos fuera de la carpeta gems?

¿Hay un comando que pueda mostrar todo instalado por una gema?

+0

Este es el resultado que obtengo con 'gema contenido sass': https://gist.github.com/2598534 - todos presentes y correctos. – matt

+0

@matt ¿Sabes qué contenido de gemas lee y/o qué podría estar causando su error en mi máquina? –

+0

Lo siento, no sé qué está causando esto. Tal vez podrías intentar eliminar y volver a instalar la gema. – matt

Respuesta

34

Hay dos muy buenas maneras de hacer esto. Hay otra gema que te permite abrir la gema y editarla. Esta joya es llamar gem-open

gem install gem-open 

continuación

gem open sass 

Otra forma es generar sus propios rdocs.

gem rdoc sass 

A continuación, puede mirar sus rdocs por

gem server 

Además, si usted está utilizando RVM, puede escribir rvm info y se mostrará GEM_HOME ubicación. Aquí estará el código fuente de todas las gemas.

cd $GEM_HOME 
cd gems/sass-3.1.2/ 

Actualización:

Ésta es la forma en que la mayoría lo hace ahora, cuando se utiliza bundler.

cd $(bundle show sass) 

Esta será la versión de sass en su Gemfile.

+2

Como usuario de RVM, cd $ GEM_HOME funciona muy bien – emery

7

El directorio lib/que mencionó es para la versión 3.1.2 de la gema; gem contents sin --version solo mostrará una versión (parece que selecciona la versión más reciente, pero no puedo verificar que esto sea siempre cierto). ¿Qué producción obtienes por gem contents --version 3.1.2 sass?

+0

Ah, +1 gracias por eso, no me di cuenta de que había dos versiones allí (como dije, novato) Sin embargo, ambos contenidos de gemas sass --version 3.1.16 y gem contenido sass --version 3.1.2 no muestra el contenido de sus respectivas carpetas lib, y (parece) que la carpeta lib es lo que hace que funcionen –

+0

Acabo de instalar ambas versiones de sass y definitivamente puedo ver la lib/carpetas enumeradas para cada uno. Esperemos que reinstalar la gema, como dijo Matt, ayude. – echristopherson

8

que suelen abrir una joya mediante la ejecución de este comando desde la consola

EDITOR=<your editor> bundle open <name of gem> 
1

Además de gem contents, otro comando le puede resultar útil es gem environment. Si tiene varias rutas para sus instalaciones de gemas, todas aparecerán bajo la etiqueta "GEM PATHS".