在rails上执行系统命令 - 不在生产中工作

时间:2013-01-26 17:39:21

标签: ruby-on-rails-3

在开发方面,一切都很有效。然而,在生产中,控制器中的这行代码无效:

    output = `mclines #{paramFileName} #{logFileName} #{outputFileName}`

其中mclines是一个c程序,其余的是文件名。 mclines不在生产服务器上执行,但它在我的笔记本电脑上执行。我不知道要解决什么问题。几个小时以来一直在尝试不同的事情,但事实是我很失落。在生产中,ssl in,这是唯一的主要区别。

如果我在shell上执行命令,它就会被执行。当我说它没有被执行是因为它应该做的第一件事是在文件中打印一些信息,而事实并非如此。服务器 - 我的笔记本电脑 - 正在运行ubuntu,但我不知道哪些日志可用于阅读。 systemlog没什么用处。

欢迎任何能够找到罪魁祸首的想法。

2 个答案:

答案 0 :(得分:1)

确保生产服务器上确实存在mclines,并使用mclines可执行文件的完整路径,如

output = `/full/path/to/mclines #{paramFileName} #{logFileName} #{outputFileName}`. 

答案 1 :(得分:0)

参考this

尝试将退出状态代码打印为:

$?.to_i

命令后......

或者在此链接中指出,您可以随时使用popen3 / popen4来更好地处理系统命令的输入/输出......