我的宝石在哪里?
gem environment
您可以使用该命令找到您的 gem 的存储位置。例如:
chris@chris-laptop:~$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.2
- RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/bin/ruby1.8
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- /home/chris/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
如果您查看“GEM PATHS:”部分,您会看到 gem 可以存储在我笔记本电脑上的两个位置:/usr/lib/ruby/gems/1.8
或者在.gem
我的主目录中的目录中。
您还可以看到可执行文件存储在 EXECUTABLE DIRECTORY 中,在本例中为/usr/bin
.
因为/usr/bin
在我的路上,这让我可以跑步cap
,merb
等等rails
。
更新你的路径
如果由于某种原因您的可执行目录不在您的路径上(例如,如果它是 /var/lib/gems/1.8/bin),那么您需要更新您的 PATH 变量。
假设您使用的是 bash shell。您可以通过在 shell 提示符下键入以下内容为当前会话快速执行此操作;假设您要添加/var/lib/gems/1.8/bin
到路径中:
export PATH=$PATH:/var/lib/gems/1.8/bin
然后按回车。这会将新目录附加到当前路径的末尾。$PATH
注意和之间的冒号/var/lib/gems/1.8/bin
要为所有会话设置值,您需要编辑您的.profile
或.bashrc
文件并将同一行添加到文件末尾。我通常.bashrc
无缘无故地编辑我的文件,这就是我一直在做的事情。完成后,保存文件,然后通过键入以下内容刷新您的环境:
bash
在 shell 提示符下。这将导致.bashrc
被重读。
$PATH
在任何时候,您都可以通过键入来检查当前值
echo $PATH
在 shell 提示符下。
这是我自己的一台服务器的示例,其中我的用户名是“chris”,机器名称是“chris-laptop”:
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
我的宝石无法加载!
“ Ruby gems won't load even though installed ” 突出了使用多个不同版本的 Ruby 的常见问题;有时 Gem 环境和 Gem 路径会不同步:
rb(main):003:0> Gem.path
=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
这里的任何 Ruby 进程都只在一个地方寻找它的 Gems。
:~/$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
- INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9
- EXECUTABLE DIRECTORY: /opt/ruby1.9/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
- /home/mark/.gem/ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
仔细看gem环境的输出:
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
这与 Gem.path 返回的路径不同:
["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
很难说到底是什么导致lib/ruby
了这种变化,lib/ruby1.9
但很可能开发人员正在使用多个 Ruby 版本。一个快速mv
或ln
将解决问题。
如果您确实需要使用多个 Ruby 版本,那么您真的应该使用rvm。