查看gem的源代码

这里的ruby涉猎者/新手谁不熟悉生态系统,所以如果这是超级问题之一的道歉。

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

$ gem install sass 

现在,我的本地系统已经成为了这个Sassgem的一部分

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

我想知道什么gem install命令放在我的系统上。 有没有一个命令,我可以运行以查看所有由gem安装的文件?

一些Googlesearch之后, man gemgem help commands ,我发现了contents命令。

$ gem内容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 

然而,这个名单似乎不完整,因为我知道有文件

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

为什么contents不显示从lib文件?

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

有一个命令,可以显示一切由gem安装?

gem有一个解压命令: http : //guides.rubygems.org/command-reference/#gem-unpack

 gem unpack rake ls rake-0.4.3/ 

有两个很好的方法来做到这一点。 还有另外一个gem可以让你打开gem并编辑。 这gem叫gem开放

 gem install gem-open 

然后

 gem open sass 

另一种方法是生成自己的rdoc。

 gem rdoc sass 

你可以看看你的rdocs

 gem server 

另外,如果您使用的是rvm,则可以键入rvm info ,并显示GEM_HOME位置。 这将是你所有的gem源代码。

 cd $GEM_HOME cd gems/sass-3.1.2/ 

更新:

这是我现在主要使用捆绑器的方式。

 cd $(bundle show sass) 

这将是你的Gemfile中的sass版本。

你提到的lib /目录是gem版本3.1.2; 没有 – --version gem contents将只列出一个版本( 它似乎挑选最新版本,但我无法validation这一直是真实的 )。 你有什么输出的gem contents --version 3.1.2 sass

我通常从控制台运行这个命令来打开一个gem

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

您也可以使用将.gem文件重命名为.tar并将其解压缩为posix压缩文件。 源代码在lib文件夹中。 有关更多详细信息,请参阅https://blog.srcclr.com/extracting-ruby-source-code-from-gem-packages/

除了gem contents ,你可能会发现有用的另一个命令是gem environment 。 如果您的gem安装有多个path,它们将全部列在“GEM PATHS”标签下。