0

我正在使用 Ruby on Rails 开发一个 Web 应用程序,并在 Linux (ubuntu) 服务器上运行它。我的后端处理基于 Windows .bat 文件,该文件根据大约 5 个参数的列表调用其他 .bat 文件的网络。

所以基本上,我试图通过我的 Rails 应用程序中的 wine 调用带有命令行首选项的初始批处理文件。

例如,这类似于我用来在 ubuntu 终端中成功运行代码:

wine cmd.exe /C InitialCallFile.bat Directory/Input.xml Directory/Output.xml param1 param2

我试图用 Ruby 中的 System 和 %x 命令来调用它。例如:

System "wine cmd.exe /C InitialCallFile.bat self.infile self.outfile self.param1 self.param2"
system wine cmd.exe InitialCallFile.bat [self.infile, self.outfile, self.param1, self.param2]
%x[wine cmd.exe /C InitialCallFile.bat self.infile self.outfile self.param1 self.param2]

和其他类似的变体

但是,程序无法识别 cmd 并返回错误:未定义的局部变量或方法 `cmd'

我应该如何使用 Ruby on Rails 在 wine 中正确调用应用程序?

4

1 回答 1

0

您应该能够使用system(注意小写s),最好是多参数形式:

system 'wine', 'cmd.exe', '/C', 'InitialCallFile.bat', self.infile, self.outfile, self.param1, self.param2

请注意,常量部分是字符串文字,而可变部分(例如self.infile)是方法调用,因此它们没有被引用。

您也可以使用字符串插值来构建命令,但这是一个非常糟糕的主意,我不会通过向您展示如何鼓励坏习惯。

于 2013-04-03T04:46:40.970 回答