如何在Ubuntu中使用宝石?

Art*_*hur 76 ruby ubuntu capistrano rubygems ruby-on-rails

我最近升级到Ubuntu 9.04,我有使用宝石的问题.我使用apt-get安装了Ruby,Rubygems和Rails.该rails命令确实有效.

然后我安装了capistrano和其他宝石,比如heroku.为了做到这一点,我使用了命令:

sudo gem install XXX
Run Code Online (Sandbox Code Playgroud)

当我想使用该cap命令时,它不起作用:

bash: cap: command not found
Run Code Online (Sandbox Code Playgroud)

它与其他gem命令相同.

我有特别的事情可以让gem命令工作吗?

Chr*_*ley 138

我的宝石在哪里?

您可以使用该gem environment命令找到存储宝石的位置.例如:

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:
Run Code Online (Sandbox Code Playgroud)

如果您查看"GEM PATHS:"部分,您可以看到宝石可以存储在我的笔记本电脑上的两个位置:/usr/lib/ruby/gems/1.8或者.gem在我家的目录中.

您还可以看到可执行文件存储在EXECUTABLE DIRECTORY中,在本例中是/usr/bin.

因为/usr/bin在我的道路这让我跑cap,merb,rails等.

更新你的PATH

如果由于某种原因,您的EXECUTABLE DIRECTORY不在您的路径上(例如,如果它是/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
Run Code Online (Sandbox Code Playgroud)

并按回车键.这会将新目录追加到当前路径的末尾.注意冒号之间$PATH/var/lib/gems/1.8/bin

要设置所有会话的值,您需要编辑.profile.bashrc文件,并将相同的行添加到文件的末尾.我通常.bashrc无缘无故地编辑我的文件,除了那是我一直以来所做的.完成后,保存文件,然后键入以下内容来刷新您的环境:

bash
Run Code Online (Sandbox Code Playgroud)

在shell提示符下.这将导致.bashrc重读.

您可以随时$PATH通过键入来检查当前值

echo $PATH
Run Code Online (Sandbox Code Playgroud)

在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:~$ 
Run Code Online (Sandbox Code Playgroud)

我的宝石不会加载!

" 即使安装了Ruby gem也不会加载 "突出了使用多个不同版本的Ruby的常见问题; 有时Gem环境和Gem路径不同步:

rb(main):003:0> Gem.path

=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
Run Code Online (Sandbox Code Playgroud)

这里的任何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/
Run Code Online (Sandbox Code Playgroud)

仔细看看宝石环境的输出:

  - GEM PATHS:
     - /opt/ruby1.9/lib/ruby/gems/1.9.1
Run Code Online (Sandbox Code Playgroud)

这与Gem.path返回的路径不同:

["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
Run Code Online (Sandbox Code Playgroud)

很难说究竟是什么导致lib/ruby改变,lib/ruby1.9但很可能开发人员正在使用多个Ruby版本.快速mvln将解决问题.

如果你确实需要使用多个Ruby版本,那么你真的应该使用rvm.


Ada*_*all 5

如@Chris所述,您需要将gems环境添加到路径中.你可以这样做:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
Run Code Online (Sandbox Code Playgroud)