gem 파일이 설치된 위치를 찾는 방법


289

를 사용하여 설치된 보석을 찾을 수 gem list있지만 보석이 설치된 위치는 표시되지 않습니다.

gem의 위치를 ​​어떻게 찾을 수 있으며, gem을 설치하기 전에 어떻게 알 수 있습니까?

답변:


375

사용 gem environment당신의 보석 환경에 대해 알아 :

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

다음에 대한 두 섹션을 확인하십시오.

  • INSTALLATION DIRECTORY
  • GEM PATHS

정보 주셔서 감사합니다! 내 환경에서는 GEM PATHS처음 사용되는 것 같습니다 . 맞습니까?
ironsand

8
gem env짧게
zanderwar

에서 보았습니다 EXECUTABLE DIRECTORY.
Matt Setter

EXECUTABLE DIRECTORYgem에 의해 설치된 CLI 실행 버전 이 포함되어 있지만 gem 자체는 아닙니다.
Tin Man

146

라이브러리 파일의 위치를 ​​얻는 것이 유용하다는 것을 알았습니다.

gem which *gemname*

6
이것은 번 들러를 필요로하지 않는 매우 멋진 간단한 방법입니다 (번 들러를 좋아하지만 :-).
antinome

2
가장 간단한 대답, 레일 또는 번 들러가 필요하지 않습니다! 좋은데!
lacostenycoder 1

logstash 개발을 수행하는 사람들에게 유용하기 때문에이 버전이 좋습니다 (내 서버에 번 들러 없음). 유용한 예 :gem which 'logstash/inputs/tcp.rb'
Cameron Kerr

항상 작동하지는 않습니다. gem이 PATH 디렉토리에 실행 파일로 존재하는 경우에만 작동합니다.
GiriB

74

보석을 설치 한 후 특정 보석의 위치를 ​​알고 싶다면. 입력 해보십시오.

 gem list

설치 한 gem 목록을 볼 수 있습니다. 이제 bundle show경로를 알고 싶은 보석을 다음과 같이 사용 하고 이름을 지정하십시오.

 bundle show <gemName>

2
이것이 모든 디렉토리에서 작동하는지 확실하지 않습니다. 나는이 명령을 실행하고 얻었다 Could not locate Gemfile or .bundle/ directory.
Richie Thomas

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를 사용하고 있다고 작성해야합니다.
ironsand

17

gem opengem 경로를 표시하도록 속일 수 있습니다 .

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 environment, gem envgem 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의 경로에 설치된 것을 제공합니다. 다단계 도커 빌드를 시도 할 때 매우 유용합니다. 번들 후 특정 디렉토리에서 복사 할 수 있습니다.

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.