我如何find安装gem文件的位置?

我可以通过命令gem listfind安装哪个gem,但是它不会显示gem安装的位置。

如何才能findgem的位置,在安装gem之前如何知道它将被安装?

使用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 

注意两个部分:

  • INSTALLATION DIRECTORY
  • GEM PATHS

我发现它是有用的获取库文件的位置:

 gem which *gemname* 

要完成其他的答案, gempath的gem可以find一个特定的gem的安装path。

安装:

 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)" 

安装gem后,如果你想知道某个特定的gem在哪里。 尝试input:

  gem list 

您将能够看到您已安装的gem列表。 现在使用bundle show命名你想知道path的gem,就像这样:

  bundle show <gemName> 

您可以通过运行gem help commands ,然后select正确的命令,从命令提示符处检查它:

 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. eg '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:~$ 

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/ 

我想rvm(和rbenv)将gem home的path保存到一个环境variables中。 如果我跑

 env | grep GEM_ 

我明白了

  • GEM_HOME=/Users/Me/.rvm/gems/ruby-2.2.3@my_project
  • GEM_PATH=/Users/Me/.rvm/gems/ruby-2.2.3@my_project:/Users/Me/.rvm/gems/ruby-2.2.3@my_project

我认为$ GEM_HOME是你感兴趣的位置

这些gem将被安装到$ GEM_HOME“/ gems”

在MAC OS中,属于gem的Ruby文件存在于

 /Library/Ruby/Gems/<Ruby_Version>/gems 

目录。

您可以使用以下命令获取与gem相对应的文件的位置:

 gem contents <gem_name>