指定gem安装目录

Alm*_*ron 27 rubygems ruby-on-rails

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

如何定义gem的安装路径?

Ole*_*yev 30

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

$ gem install --install-dir /path/to/gems/folder foo
Run Code Online (Sandbox Code Playgroud)

它有助于:

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

希望有所帮助.

  • 对于 gem 版本 `3.3.5`,我必须使用 `--install-dir` **和** `--no-user-install` 选项,否则我会收到错误:_错误:使用 --install-dir 或 - -用户安装但不是两者_ (2认同)

IKA*_*IKA 14

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

在Windows中它是 set

set GEM_HOME=[path]/projects/shared/gems/ruby/1.8/gems
Run Code Online (Sandbox Code Playgroud)

Linux会是 export

export GEM_HOME=~/projects/shared/gems/ruby/1.8/gems
Run Code Online (Sandbox Code Playgroud)


dpa*_*luy 13

您可以将以下内容添加到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
Run Code Online (Sandbox Code Playgroud)

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

还要配置服务器.bashrc:

export GEM_HOME="$HOME/projects/shared/gems/ruby/1.8/gems"
export GEM_PATH="$GEM_HOME:/var/lib/ruby/gems/1.8"
Run Code Online (Sandbox Code Playgroud)

  • 我没有.我也没有应用程序.我正在尝试在Ruby中安装别人的工具,它需要某些宝石.我不得不对'sudo``gem install`感到不舒服,这就是为什么我在这里寻找一种微调宝石路径的方法.你的答案没有给我我正在寻找的东西. (5认同)

Bra*_*rad 5

bundler 接受一个 --path 选项。

bundle install --path vendor/bundle
Run Code Online (Sandbox Code Playgroud)