我正在尝试从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返回空输出,这让我相信,与服务器环境有关,通过我重复,如果我手动运行此命令,工作正常。
非常感谢任何有关挖掘地点的帮助。