我设置了一个钩子,因为它可以像我的常规用户一样运行,并使用gem install --user-install
在该用户下安装所需的gem。现在我想以不同的用户身份运行钩子,但是当我尝试它时,ruby无法找到已安装的宝石:
$ /home/user/.gem/ruby/1.9.1/bin/jekyll
/usr/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find jekyll (>= 0) amongst [rack-1.5.2, rack-protection-1.5.0, ruby-openid-2.1.8, sinatra-1.0, tilt-1.3.6] (Gem::LoadError)
from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /usr/lib/ruby/1.9.1/rubygems.rb:1210:in `gem'
from /home/user/.gem/ruby/1.9.1/bin/jekyll:18:in `<main>'
答案 0 :(得分:1)
您需要让Ruby知道其宝石的安装位置。环境GEM_HOME
控制着这个,所以你可以这样做:
export GEM_HOME=/home/user/.gem/ruby/1.9.1
$GEM_HOME/bin/jekyll help
答案 1 :(得分:0)
不是尝试为一个用户安装并在另一个用户下运行,而是为所有用户安装。
在共享环境主机上,如果您具有“sudo”功能,或者系统管理员,您可以为所有人全局安装正常sudo gem install ...
。
正常的Ruby安装就是这样。
通常,作为开发人员,我们希望在我们自己的个人沙箱中运行Ruby,因此我们可以更改和安装Ruby版本并加载不同版本的gem,而不会影响其他人。
一旦代码准备好进行测试和生产,我们希望它在共享环境中,因此我们只在所有应用程序之间共享一个Ruby安装,这些应用程序通常作为同一个用户运行。即使应用程序作为不同的用户运行,它们仍然使用相同的Ruby。
他们通过默认环境和路径执行此操作。如果这没有意义,请与系统管理员联系。