来自Bash脚本的另一个用户下的Ruby RVM

时间:2012-06-14 08:13:05

标签: ruby bash rvm sudo su

通过 su 命令和其他脚本在另一个用户下启动ruby脚本的最佳方法是什么?

我有一个bash脚本,其中包含以下用于启动独角兽的命令:

sudo -u unicornuser sh -l -c "bundle exec unicorn_rails -E production -D"

此脚本是 init.d 脚本,它在系统启动时执行,也可以手动执行。

问题是系统上的默认ruby是1.8,其他rubyes(1.9)在RVM下运行。我需要修改上面的脚本,它可以用RVM(非系统范围的)

执行rubt

现在我已经迁移了这个表示法:

su -l -c "rvm use ruby-1.9.3-p125 && bundle exec unicorn_rails -E production -D" unicornuser

这对我有用,但我想必须有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

你应该使用包装器:

rvm wrapper ruby-1.9.3-p125 ext_1.9.3 bundle

这将创建$rvm_path/bin/ext_1.9.3_bundle,现在您可以使用:

/full/path/to/rvm/bin/ext_1.9.3_bundle exec unicorn_rails -E production -D

使用/full/path/to/rvm

的输出替换echo $rvm_path