指定gem安装目录

时间:2013-04-19 06:43:57

标签: ruby-on-rails rubygems

我在这里遇到了一些麻烦。我正在使用Rails 2.3项目(通过ssh在生产服务器上工作 - 不要问为什么)。这是Gemfile。当delayed_jobs尝试启动时,输出显示我需要安装bundler gem。问题是gemdir是/var/lib/gems/1.8/而且我没有该目录的写权限。但是在我可以写的〜/ projects / shared / gems / ruby​​ / 1.8 / gems下有一个目录。

如何定义gem的安装路径?

4 个答案:

答案 0 :(得分:28)

要将 foo gem安装到指定的文件夹,只需使用--install-dir选项,即

$ gem install --install-dir /path/to/gems/folder foo

在以下情况下有所帮助:

  • 一个人无法使用bundle install - 例如如果想要安装捆绑 gem本身,或者想要将gem(未在Gemfile中列出)安装到捆绑包文件夹中
  • sudo gem install命令由于缺少对默认安装路径的写入权限而失败

希望有所帮助。

答案 1 :(得分:13)

环境变量GEM_HOME定义gem安装位置。您需要将其设置为所需的位置。该命令特定于操作系统。

在Windows中,它是set

set GEM_HOME=[path]/projects/shared/gems/ruby/1.8/gems

Linux将是export

export GEM_HOME=~/projects/shared/gems/ruby/1.8/gems

答案 2 :(得分:12)

您可以将以下内容添加到 config.ru 文件中:

ENV['GEM_HOME']="#{ENV['HOME']}/projects/shared/gems/ruby/1.8/gems"
ENV['GEM_PATH']="#{ENV['GEM_HOME']}:/var/lib/ruby/gems/1.8"
require 'rubygems'
Gem.clear_paths

这将告诉您的机架应用程序在哪里寻找宝石。

还要配置您的服务器 .bashrc

export GEM_HOME="$HOME/projects/shared/gems/ruby/1.8/gems"
export GEM_PATH="$GEM_HOME:/var/lib/ruby/gems/1.8"

答案 3 :(得分:1)

捆绑程序接受--path选项。

bundle install --path vendor/bundle