Ruby dabbler / newbie在这里对生态系统不熟悉,如果这是其中一个超级问题,那么道歉。
有没有办法查看所有由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
命令。
$ gem 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安装所有内容的命令?
答案 0 :(得分:52)
gem有一个解包命令:http://guides.rubygems.org/command-reference/#gem-unpack
gem unpack rake
ls rake-0.4.3/
答案 1 :(得分:36)
有两种非常好的方法可以做到这一点。还有另一个宝石可以让你打开宝石并进行编辑。这个宝石叫gem-open
gem install gem-open
然后
gem open sass
另一种方法是生成自己的rdocs。
gem rdoc sass
然后你可以通过
查看你的rdocsgem server
此外,如果您使用的是rvm,则可以输入rvm info
,它会显示GEM_HOME
位置。
这将是您所有宝石源代码的所在。
cd $GEM_HOME
cd gems/sass-3.1.2/
更新
这是我在使用bundler时主要执行此操作的方式。
cd $(bundle show sass)
这将是Gemfile中sass的版本。
答案 2 :(得分:12)
我通常通过从控制台运行此命令来打开一个gem
EDITOR=<your editor> bundle open <name of gem>
答案 3 :(得分:7)
您提到的lib /目录是针对gem的3.1.2版本;没有gem contents
的{{1}}只会列出一个版本(它似乎会选择最新版本,但我无法验证这是否为真)。您为--version
获得了什么输出?
答案 4 :(得分:2)
您也可以使用.gem文件重命名为.tar并解压缩为posix存档。源代码位于lib
文件夹中。有关详细信息,请参阅https://blog.srcclr.com/extracting-ruby-source-code-from-gem-packages/。
答案 5 :(得分:2)
除了gem contents
之外,您可能会发现另一个有用的命令是gem environment
。如果您的宝石安装有多个路径,它们将全部列在&#34; GEM PATHS&#34;标签