指定gem安装目录

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

如何定义gem的安装路径?

您可以将以下内容添加到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 

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

还要配置服务器.bashrc

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

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

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

它有助于:

  • 一个人不能使用bundle install – 例如,如果一个人想要安装bundle gem本身,或者想要将gem(在Gemfile中没有列出)安装到bundle文件夹中
  • 由于缺少默认安装路径的写入权限, sudo gem install命令失败

希望有所帮助。

环境变量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 

您也可以使用Bundler配置文件设置捆绑软件安装路径。 我写了一篇post ,你可以查看一下你是否觉得它有用。

bundler接受–path选项。

 bundle install --path vendor/bundle