如何以不同的用户身份运行用户安装的Ruby gem?

时间:2013-06-22 16:22:36

标签: ruby gem

我设置了一个钩子,因为它可以像我的常规用户一样运行,并使用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>'

2 个答案:

答案 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。

他们通过默认环境和路径执行此操作。如果这没有意义,请与系统管理员联系。

相关问题