Rails反引号系统命令执行返回空输出

时间:2014-06-26 13:22:28

标签: python ruby-on-rails ruby linux ubuntu

我正在尝试从Rails控制器执行自定义python脚本。

假设我有这段代码:

command_string = "add_domain --domain=#{@domain.domain}"
command = `#{command_string}`

其中add_domain是一个自定义的python脚本(存储在/ usr / bin中,带有chmod + x权限)可以执行一些魔术并返回以下行:

Generation is completed.

然后我将输出记录到文本文件以进行进一步的调试,但它只是返回空输出,如果我尝试通过在shell控制台中执行相同的命令手动执行它,它就可以正常运行并返回以上输出。它甚至可以从Rails控制台完美运行。

我也确定@ domain.domain包含正确的值,事实上,如果我用静态值替换它仍然会发生问题,但是,只返回空值并且脚本没有正确执行。

另一方面,简单的echo命令执行得很好并返回值。

修改

stdin, stdout, stderr = Open3.popen3(command_string)
stdout.gets

也会返回空值。

编辑2

它似乎与环境有关,因为反引用方法适用于本地机器。

编辑3

我也试过系统方法和%x(command_string) all返回空输出,这让我相信,与服务器环境有关,通过我重复,如果我手动运行此命令,工作正常。

非常感谢任何有关挖掘地点的帮助。

0 个答案:

没有答案