查看Gem的源代码

Ala*_*orm 48 ruby rubygems

Ruby dabbler/newbie在这里不熟悉生态系统,如果这是其中一个超级问题,那么道歉.

有没有办法查看gem安装的所有文件和/或源代码?也就是说,我跑了

$ gem install sass
Run Code Online (Sandbox Code Playgroud)

而sass gem现在是我本地系统的一部分

$ gem list --local
...
sass (3.1.16, 3.1.2)
...
Run Code Online (Sandbox Code Playgroud)

我想知道gem install命令对我的系统的影响.是否有命令我可以运行以查看gem安装的所有文件?

一些google搜索后,man gemgem help commands,我发现了contents命令.

$ gem content sass

但是,当我使用前面提到的sass gem运行此命令时,我得到以下结果

.../.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
Run Code Online (Sandbox Code Playgroud)

但是,这个列表似乎不完整,因为我知道有文件

.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.2/lib/
Run Code Online (Sandbox Code Playgroud)

为什么不contents显示文件lib

gem安装程序是否可以在gems文件夹之外安装文件?

是否有一个命令可以显示由gem安装的所有内容

ear*_*ils 36

有两种非常好的方法可以做到这一点.还有另一个宝石可以让你打开宝石并进行编辑.这个宝石叫做宝石开放

gem install gem-open 
Run Code Online (Sandbox Code Playgroud)

然后

gem open sass
Run Code Online (Sandbox Code Playgroud)

另一种方法是生成自己的rdocs.

gem rdoc sass
Run Code Online (Sandbox Code Playgroud)

然后你可以看看你的rdocs

gem server
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用rvm,您可以键入rvm info并显示GEM_HOME位置.这将是您所有宝石源代码的所在.

cd $GEM_HOME
cd gems/sass-3.1.2/
Run Code Online (Sandbox Code Playgroud)

更新:

这是我在使用bundler时大部分时间都这样做的方式.

cd $(bundle show sass) 
Run Code Online (Sandbox Code Playgroud)

这将是Gemfile中sass的版本.


lui*_*gal 15

我通常通过从控​​制台运行此命令来打开gem

EDITOR=<your editor> bundle open <name of gem>
Run Code Online (Sandbox Code Playgroud)


ech*_*son 7

您提到的lib /目录是针对gem的3.1.2版本; gem contents没有--version将只列出一个版本(它似乎选择最新的版本,但我无法验证这总是如此).你得到什么输出gem contents --version 3.1.2 sass