52

エコシステムに慣れていない Ruby 初心者/初心者なので、これが非常に当たり前の質問の 1 つである場合はお詫びします。

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 コンテンツ 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 によってインストールされたすべてを表示できるコマンドはありますか?

4

6 に答える 6

62

gem には unpack コマンドがあります: http://guides.rubygems.org/command-reference/#gem-unpack

gem unpack rake
ls rake-0.4.3/
于 2012-05-04T17:34:14.717 に答える
39

これを行うには、2 つの非常に優れた方法があります。gem を開いて編集できる別の gem があります。この gem はgem-openと呼ばれます

gem install gem-open 

それから

gem open sass

もう 1 つの方法は、独自の rdoc を生成することです。

gem rdoc sass

その後、次の方法でrdocを確認できます

gem server

また、rvm を使用している場合は、入力すると場所rvm infoが表示されGEM_HOMEます。これは、すべての gems ソース コードがある場所になります。

cd $GEM_HOME
cd gems/sass-3.1.2/

アップデート:

これは、バンドラーを使用するときに、私が現在これを行うほとんどの方法です。

cd $(bundle show sass) 

これは、Gemfile 内の sass のバージョンになります。

于 2012-05-04T17:34:37.180 に答える
17

私は通常、コンソールからこのコマンドを実行して gem を開きます

EDITOR=<your editor> bundle open <name of gem>
于 2015-04-21T11:26:28.653 に答える
7

あなたが言及した lib/ ディレクトリは、gem のバージョン 3.1.2 用です。gem contentswithout--versionは 1 つのバージョンのみをリストします (最新バージョンを選択しているように見えますが、これが常に true であることを確認できません)。どのような出力が得られgem contents --version 3.1.2 sassますか?

于 2012-05-05T17:08:16.297 に答える
3

.gem ファイルの名前を .tar に変更して、posix アーカイブとして抽出することもできます。ソースコードはそのlibフォルダ内にあります。詳細については、 https://blog.srcclr.com/extracting-ruby-source-code-from-gem-packages/を参照してください。

于 2015-04-11T03:03:58.313 に答える
2

に加えてgem contents、役に立つと思われる別のコマンドは ですgem environment。gem のインストールに複数のパスがある場合、それらはすべて「GEM PATHS」ラベルの下にリストされます。

于 2016-04-06T20:13:45.923 に答える