gemファイルがインストールされている場所を見つける方法


289

を使用してインストールされているgemを見つけるgem listことができますが、gemがインストールされている場所が表示されません。

gemの場所を見つけるにはどうすればよいですか。また、gemがインストールされる場所をインストールする前に、どのようにして知ることができますか?

回答:


374

を使用gem environmentして、gem環境について調べます。

RubyGems Environment:
  - RUBYGEMS VERSION: 2.1.5
  - RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-darwin12.4.0]
  - INSTALLATION DIRECTORY: /Users/ttm/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0
  - RUBY EXECUTABLE: /Users/ttm/.rbenv/versions/2.0.0-p247/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/ttm/.rbenv/versions/2.0.0-p247/bin
  - SPEC CACHE DIRECTORY: /Users/ttm/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /Users/ttm/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0
     - /Users/ttm/.gem/ruby/2.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/ttm/.rbenv/versions/2.0.0-p247/bin
     - /Users/ttm/.rbenv/libexec
     - /Users/ttm/.rbenv/plugins/ruby-build/bin
     - /Users/ttm/perl5/perlbrew/bin
     - /Users/ttm/perl5/perlbrew/perls/perl-5.18.1/bin
     - /Users/ttm/.pyenv/shims
     - /Users/ttm/.pyenv/bin
     - /Users/ttm/.rbenv/shims
     - /Users/ttm/.rbenv/bin
     - /Users/ttm/bin
     - /usr/local/mysql-5.6.12-osx10.7-x86_64/bin
     - /Users/ttm/libsmi/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/bin

次の2つのセクションに注意してください。

  • INSTALLATION DIRECTORY
  • GEM PATHS

あなたの情報をありがとう!私の環境では、GEM PATHS最初に使用されたようです。そうですか?
鉄砂2013

8
gem env略して
zanderwar 2017年

私は見ますEXECUTABLE DIRECTORY
マットセッター

EXECUTABLE DIRECTORYは、gemによってインストールされたCLI実行可能バージョンが含まれていますが、gem自体ではありません。
ティンマン

146

ライブラリファイルの場所を取得すると便利です。

gem which *gemname*

6
これは、バンドラーを必要としないとても素晴らしいシンプルな方法です(私はバンドラーが大好きですが:-)。
2016年

2
最も簡単な答えは、レールやバンドラーを必要としません!良いですね!
lacostenycoder 2017

このバージョンが好きなのは、logstash開発をしている人たちに役立つからです(私のサーバーにはバンドラーがありません)。例は役に立ちます:gem which 'logstash/inputs/tcp.rb'
Cameron Kerr

それは常にうまくいくとは限りません。gemがPATHディレクトリに実行可能ファイルとして存在する場合にのみ機能します。
GiriB

74

宝石をインストールした後、特定の宝石の場所を知りたい場合。入力してみてください:

 gem list

インストールしたgemのリストを見ることができます。次のbundle showように、パスを知りたいgemを使用して名前を付けます。

 bundle show <gemName>

2
これがすべてのディレクトリで機能するかどうかはわかりません。私はこのコマンドを実行して得ましたCould not locate Gemfile or .bundle/ directory
リッチートーマス

1
完全なパスが表示されるので、これが最善の方法です(一方、gem env)は、gemsフォルダーの親フォルダーのみを表示します/home/test/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0。その中にいくつかのフォルダーがあり、あなたの宝石はそれらのほとんどすべてに配置されているかもしれません-それbundle show <gemName>は正確に(そしてgem env)表示しないものです。
prograils

49

他の回答を完了するために、gem-path gemは特定のgemのインストールパスを見つけることができます。

インストール:

gem install gem-path

使用法:

gem path rails
=> /home/cbliard/.rvm/gems/ruby-2.1.5/gems/rails-4.0.13
gem path rails '< 4'
=> /home/cbliard/.rvm/gems/ruby-2.1.5/gems/rails-3.2.21

これは、grepやファイルの編集に使用できるため、非常に便利です。

grep -R 'Internal server error' "$(gem path thin)"
subl "$(gem path thin)"

33

コマンドプロンプトから実行gem help commandsし、適切なコマンドを選択することで確認できます。

kirti@kirti-Aspire-5733Z:~$  gem help commands
GEM commands are:

    build                  Build a gem from a gemspec
    cert                   Manage RubyGems certificates and signing settings
    check                  Check a gem repository for added or missing files
    cleanup                Clean up old versions of installed gems in the local
                           repository
    contents               Display the contents of the installed gems
    dependency             Show the dependencies of an installed gem
    environment            Display information about the RubyGems environment
    fetch                  Download a gem and place it in the current directory
    generate_index         Generates the index files for a gem server directory
    help                   Provide help on the 'gem' command
    install                Install a gem into the local repository
    list                   Display gems whose name starts with STRING
    lock                   Generate a lockdown list of gems
    mirror                 Mirror all gem files (requires rubygems-mirror)
    outdated               Display all gems that need updates
    owner                  Manage gem owners on RubyGems.org.
    pristine               Restores installed gems to pristine condition from
                           files located in the gem cache
    push                   Push a gem up to RubyGems.org
    query                  Query gem information in local or remote repositories
    rdoc                   Generates RDoc for pre-installed gems
    regenerate_binstubs    Re run generation of executable wrappers for gems.
    search                 Display all gems whose name contains STRING
    server                 Documentation and gem repository HTTP server
    sources                Manage the sources and cache file RubyGems uses to
                           search for gems
    specification          Display gem specification (in yaml)
    stale                  List gems along with access times
    uninstall              Uninstall gems from the local repository
    unpack                 Unpack an installed gem to the current directory
    update                 Update installed gems to the latest version
    which                  Find the location of a library file you can require
    yank                   Remove a specific gem version release from
                           RubyGems.org

For help on a particular command, use 'gem help COMMAND'.

Commands may be abbreviated, so long as they are unambiguous.
e.g. 'gem i rake' is short for 'gem install rake'.
kirti@kirti-Aspire-5733Z:~$ 

これで上から、コマンドenvironmentが役立つことがわかります。だから私はやります:

kirti@kirti-Aspire-5733Z:~$ gem help environment
Usage: gem environment [arg] [options]


  Common Options:
    -h, --help                       Get help on this command
    -V, --[no-]verbose               Set the verbose level of output
    -q, --quiet                      Silence commands
        --config-file FILE           Use this config file instead of default
        --backtrace                  Show stack backtrace on errors
        --debug                      Turn on Ruby debugging


  Arguments:
    packageversion  display the package version
    gemdir          display the path where gems are installed
    gempath         display path used to search for gems
    version         display the gem format version
    remotesources   display the remote gem servers
    platform        display the supported gem platforms
    <omitted>       display everything

  Summary:
    Display information about the RubyGems environment

  Description:
    The RubyGems environment can be controlled through command line arguments,
    gemrc files, environment variables and built-in defaults.

    Command line argument defaults and some RubyGems defaults can be set in a
    ~/.gemrc file for individual users and a /etc/gemrc for all users. These
    files are YAML files with the following YAML keys:

      :sources: A YAML array of remote gem repositories to install gems from
      :verbose: Verbosity of the gem command. false, true, and :really are the
                levels
      :update_sources: Enable/disable automatic updating of repository metadata
      :backtrace: Print backtrace when RubyGems encounters an error
      :gempath: The paths in which to look for gems
      :disable_default_gem_server: Force specification of gem server host on
    push
      <gem_command>: A string containing arguments for the specified gem command

    Example:

      :verbose: false
      install: --no-wrappers
      update: --no-wrappers
      :disable_default_gem_server: true

    RubyGems' default local repository can be overridden with the GEM_PATH and
    GEM_HOME environment variables. GEM_HOME sets the default repository to
    install into. GEM_PATH allows multiple local repositories to be searched for
    gems.

    If you are behind a proxy server, RubyGems uses the HTTP_PROXY,
    HTTP_PROXY_USER and HTTP_PROXY_PASS environment variables to discover the
    proxy server.

    If you would like to push gems to a private gem server the RUBYGEMS_HOST
    environment variable can be set to the URI for that server.

    If you are packaging RubyGems all of RubyGems' defaults are in
    lib/rubygems/defaults.rb.  You may override these in
    lib/rubygems/defaults/operating_system.rb
kirti@kirti-Aspire-5733Z:~$ 

最後に、あなたが尋ねたことをあなたに示すために、私はやります:

kirti@kirti-Aspire-5733Z:~$ gem environment gemdir
/home/kirti/.rvm/gems/ruby-2.0.0-p0
kirti@kirti-Aspire-5733Z:~$ gem environment gempath
/home/kirti/.rvm/gems/ruby-2.0.0-p0:/home/kirti/.rvm/gems/ruby-2.0.0-p0@global
kirti@kirti-Aspire-5733Z:~$ 

1
ありがとう!私は知りませんでしたgem help commands。そして、私はrbenvを使用していると書いておくべきです。
鉄砂2013

17

あなたgem openは宝石のパスを表示するように騙すことができます:

VISUAL=echo gem open gem-name

例:

VISUAL=echo gem open rails
=> /usr/local/opt/asdf/installs/ruby/2.4.3/lib/ruby/gems/2.4.0/gems/rails-5.1.4

動作するだけで、サードパーティの宝石は必要ありません。


2
これは完璧です!この有用な情報が意図的なコマンドではなく副作用であることは残念です。環境変数を設定するよりも簡単な場合は、-eオプション(-e echo)で「エディター」を指定することもできます。
Steve

綺麗な!最後の部分を省略して、エディターでそのディレクトリに移動し、宝石を分解してください;-)
ARK

14

gem envのように動作しgem environmentます。入力の手間が省けます。

# gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0 (2014-02-24 patchlevel 451) [i686-linux]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.0.0
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/2.0.0
     - /root/.gem/ruby/2.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/

「同じように機能する」のではなく、同じコマンドです。gem help commandsリターンは、「コマンド。例えば、 『宝石の私の熊手が』 『宝石は熊手をインストールする』のために短いです。限り、彼らはあいまいでないと、省略することができる、つまり」gem environmentgem envおよびgem eすべての作業が、gem environment知らない人のための自己文書でありますそれが何をしているのか、私たちはそれを初めての人に使うべきです。
Tin Man、

2

gem envジェムインストールできる場所のリストですが、これは10以上の場所にすることができます。特定のgem インストールされている場所を知りたい場合、次のコマンドを実行できます。

gem list -d <gemname>

出力例:

tilt (2.0.9)
    Author: Ryan Tomayko
    Homepage: http://github.com/rtomayko/tilt/
    License: MIT
    Installed at: /opt/rubies/ruby-2.5.3/lib/ruby/gems/2.5.0

    Generic interface to multiple Ruby template engines

0

rvmツールを使用している場合は、次のコマンドを実行してgemパスを出力できます。

rvm gemdir

または

echo $GEM_HOME

0

これは機能し、各gemのパスにインストールされています。これは、マルチステージのDockerビルドを実行するときに非常に役立ちます。バンドルのインストール後に特定のディレクトリにコピーできます。

bash-4.4# gem list -d

出力::

aasm (5.0.6)
    Authors: Thorsten Boettger, Anil Maurya
    Homepage: https://github.com/aasm/aasm
    License: MIT
    Installed at: /usr/local/bundle

  State machine mixin for Ruby objects
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.