Làm thế nào để tìm nơi tập tin đá quý được cài đặt


289

Tôi có thể tìm thấy đá quý được cài đặt bằng cách sử dụng gem list, nhưng nó không cho tôi biết đá quý được cài đặt ở đâu.

Làm cách nào tôi có thể tìm thấy đá quý ở đâu và làm thế nào tôi có thể biết trước khi cài đặt đá quý nơi nó sẽ được cài đặt?

Câu trả lời:


374

Sử dụng gem environmentđể tìm hiểu về môi trường đá quý của bạn:

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

Lưu ý hai phần cho:

  • INSTALLATION DIRECTORY
  • GEM PATHS

Cảm ơn thông tin của bạn! Trong môi trường của tôi, nó dường như GEM PATHSchỉ được sử dụng đầu tiên. Có đúng không?
ironsand

8
gem envviết tắt
zanderwar

Tôi sẽ nhìn vào EXECUTABLE DIRECTORY.
Matt Setter

EXECUTABLE DIRECTORYchứa các phiên bản thực thi CLI được cài đặt bởi các viên đá quý, nhưng bản thân nó không phải là các viên đá quý.
Tin Man

146

Tôi thấy hữu ích để có được một vị trí của tệp thư viện với:

gem which *gemname*

6
Đây là một phương pháp đơn giản rất hay không yêu cầu trình đóng gói (mặc dù tôi rất thích trình biên dịch :-).
antinome

2
Câu trả lời đơn giản nhất, không yêu cầu đường ray, hoặc gói! ĐỨA MỘT!
lacostenycoder

Tôi thích phiên bản này vì nó hữu ích cho những người thực hiện phát triển logstash (không có trình đóng gói trên máy chủ của tôi). Ví dụ rất hữu ích:gem which 'logstash/inputs/tcp.rb'
Cameron Kerr

Điều đó sẽ không luôn luôn hoạt động. Chỉ hoạt động khi đá quý của bạn tồn tại dưới dạng thực thi trong thư mục PATH của bạn.
GiriB

74

Sau khi cài đặt đá quý, nếu bạn muốn biết đá quý cụ thể ở đâu. Hãy thử gõ:

 gem list

Bạn sẽ có thể xem danh sách các loại đá quý bạn đã cài đặt. Bây giờ sử dụng bundle showvà đặt tên cho viên ngọc bạn muốn biết đường dẫn, như thế này:

 bundle show <gemName>

2
Tôi không chắc chắn rằng điều này hoạt động trong tất cả các thư mục. Tôi chạy lệnh này và nhận được Could not locate Gemfile or .bundle/ directory.
Richie Thomas

1
Đó là cách tốt nhất vì nó hiển thị đường dẫn đầy đủ, (trong khi gem env) chỉ hiển thị thư mục mẹ cho gemsthư mục : /home/test/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0. Có một số thư mục bên trong nó và đá quý của bạn có thể nằm trong hầu hết mọi thư mục - đó là những gì bundle show <gemName>hiển thị chính xác (và gem env) không.
prograils

49

Để hoàn thành các câu trả lời khác, gem gem-path có thể tìm đường dẫn cài đặt của một gem cụ thể.

Cài đặt:

gem install gem-path

Sử dụng:

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

Điều này thực sự tiện dụng vì bạn có thể sử dụng nó để grep hoặc chỉnh sửa tệp:

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

33

Bạn có thể kiểm tra nó từ dấu nhắc lệnh của mình bằng cách chạy gem help commandsvà sau đó chọn lệnh thích hợp:

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:~$ 

Bây giờ từ trên tôi có thể thấy lệnh environmentlà hữu ích. Vì vậy, tôi sẽ làm:

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:~$ 

Cuối cùng để cho bạn thấy những gì bạn yêu cầu, tôi sẽ làm:

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
Cảm ơn! Tôi không biết gem help commands. Và tôi nên viết rằng tôi đang sử dụng rbenv.
ironsand

17

Bạn có thể lừa gem openhiển thị đường dẫn đá quý:

VISUAL=echo gem open gem-name

Thí dụ:

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

Nó chỉ hoạt động, và không có đá quý bên thứ ba là cần thiết.


2
Đây là hoàn hảo! Thật xấu hổ khi thông tin hữu ích này là một tác dụng phụ thay vì một lệnh cố ý. Lưu ý rằng bạn cũng có thể chỉ định "trình chỉnh sửa" với -etùy chọn ( -e echo), nếu việc này dễ hơn là đặt biến môi trường.
Steve

Xinh đẹp! Chỉ cần bỏ qua phần cuối cùng và đi vào thư mục đó trong trình chỉnh sửa của bạn và xé các viên đá quý ;-)
ARK

14

gem envhoạt động giống như gem environment. Tiết kiệm một số gõ.

# 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/

Nó không "hoạt động giống như", đó là cùng một lệnh. gem help commandsThu nhập " lệnh có thể được viết tắt, vì vậy miễn là họ có rõ ràng. ví dụ như 'viên ngọc i cào' là viết tắt của 'gem install cào'. " Nói cách khác, gem environment, gem envgem etất cả công việc nhưng gem environmentlà tự tài liệu cho những ai không biết những gì nó đang làm vì vậy chúng ta nên sử dụng nó cho những người lần đầu tiên.
Tin Man

2

Các gem envdanh sách nơi đá quý có thể được cài đặt, nhưng điều này có thể là 10 hoặc nhiều địa điểm. Nếu bạn muốn biết nơi một viên ngọc cụ thể được cài đặt, bạn có thể thực thi:

gem list -d <gemname>

Ví dụ đầu ra:

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

nếu bạn đang sử dụng công cụ rvm, bạn có thể chạy lệnh này để in đường dẫn đá quý:

rvm gemdir

HOẶC LÀ

echo $GEM_HOME

0

Điều này hoạt động và cung cấp cho bạn cài đặt tại đường dẫn cho mỗi đá quý. Điều này siêu hữu ích khi cố gắng thực hiện các bản dựng docker nhiều giai đoạn .. Bạn có thể sao chép trong thư mục cài đặt sau gói cụ thể.

bash-4.4# gem list -d

Đầu ra ::

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.