0

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

我有一个带有以下命令的 bash 脚本来启动独角兽:

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

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

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

现在我已经迁移了这个符号:

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

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

4

1 回答 1

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

于 2012-06-14T13:18:14.593 回答