我这里有点麻烦。我正在使用 Rails 2.3 项目(通过 ssh 在生产服务器上工作 - 不要问为什么)。这是Gemfile。当delayed_jobs 尝试启动时,输出显示我需要安装bundler gem。问题是 gemdir 是 /var/lib/gems/1.8/ 并且我没有该目录的写入权限。但是 ~/projects/shared/gems/ruby/1.8/gems 下有一个目录,我可以在其中编写。
如何定义 gem 的安装路径?
我这里有点麻烦。我正在使用 Rails 2.3 项目(通过 ssh 在生产服务器上工作 - 不要问为什么)。这是Gemfile。当delayed_jobs 尝试启动时,输出显示我需要安装bundler gem。问题是 gemdir 是 /var/lib/gems/1.8/ 并且我没有该目录的写入权限。但是 ~/projects/shared/gems/ruby/1.8/gems 下有一个目录,我可以在其中编写。
如何定义 gem 的安装路径?
要将foo gem 安装到指定文件夹,只需使用--install-dir
选项,即
$ gem install --install-dir /path/to/gems/folder foo
在以下情况下会有所帮助:
bundle install
- 例如,如果想要安装bundle gem 本身,或者想要将 gem(未在 Gemfile 中列出)安装到bundle文件夹中sudo gem install
由于缺少默认安装路径的写入权限,命令失败希望有帮助。
您可以将以下内容添加到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"
环境变量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 接受 --path 选项。
bundle install --path vendor/bundle