查看 Gem 的源代码

问题描述 投票:0回答:6

这里是 Ruby 涉足者/新手,不熟悉生态系统,所以如果这是那些超级愚蠢的问题之一,我深表歉意。

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

$ gem install sass

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

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

我想知道

gem install
命令在我的系统上添加了什么。我可以运行一个命令来查看 gem 安装的所有文件吗? 经过一番谷歌搜索,

man gem

gem help commands
,我发现了
contents
命令。

$ 宝石内容 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

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


有没有一个命令可以显示gem安装的

所有内容

ruby rubygems
6个回答
64
投票
http://guides.rubygems.org/command-reference/#gem-unpack

gem unpack rake ls rake-0.4.3/



39
投票
gem-open

gem install gem-open

然后

gem open sass

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

gem rdoc sass

然后您可以通过 
查看您的 rdocs

gem server

此外,如果您使用 RVM,您可以输入 
rvm info

,它将显示

GEM_HOME
位置。 这将是您所有 gems 源代码的所在。

cd $GEM_HOME cd gems/sass-3.1.2/

更新:

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

cd $(bundle show sass)

这将是您 Gemfile 中 sass 的版本。


17
投票

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



7
投票
gem contents

--version
只会列出一个版本(
它似乎选择了最新版本,但我无法验证这是否总是正确的
)。您会得到什么输出 gem contents --version 3.1.2 sass
    


4
投票
lib

文件夹中。请参阅

https://www.veracode.com/blog/secure-development/how-extract-ruby-source-code-gem-packages-java
了解更多详细信息。


3
投票
gem contents

之外,您可能会发现另一个有用的命令是

gem environment
。如果您的 gem 安装有多个路径,它们将全部列在“GEM PATHS”标签下。
    

© www.soinside.com 2019 - 2024. All rights reserved.