2

我有一个在 Ruby 1.9 上运行的 Rails 应用程序和一个依赖于 Ruby 1.8 的 shell 脚本(Podcast Producer)。

我需要从应用程序中调用 shell 脚本。我使用的 Ruby 版本管理器是 rvm,应用程序在乘客中运行。现在由于明显的原因,它为 shell 脚本使用了错误的 Ruby(意味着它加载了 rvm 和 bundler env,并尝试在应用程序运行时在同一个环境中启动它)。

shell脚本的第一行:

#!/usr/bin/env ruby -I/usr/lib/podcastproducer

在应用程序中调用

`/usr/bin/podcast`

你会如何解决这个问题?

4

2 回答 2

2

RVM中有do命令。所以你需要打电话:

%x{rvm 1.8.7 do /usr/bin/podcast}

或者如果/usr/bin/$PATH你只能运行:

%x{rvm 1.8.7 do podcast}
于 2013-04-18T07:55:45.977 回答
1

You can use rvm-shell (included in the RVM installation) to override the current Ruby/RVM version in your environment and explicitly use the system's default Ruby version (assuming you have not installed an alternate Ruby version as your system default, which you can check by running /usr/bin/ruby -v).

You should be able to use rvm-shell from within a Ruby script as follows:

`rvm-shell system -c '/usr/bin/podcast'`

The system argument instructs RVM to use the system's default Ruby version.

于 2013-04-18T07:56:30.823 回答