0

Ruby on Rails を使用して Web アプリケーションを開発し、Linux (ubuntu) サーバーで実行しています。私のバックエンド処理は、約 5 つのパラメーターのリストに基づいて他の .bat ファイルのネットワークを呼び出す Windows .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 を認識せず、エラーが返されます: undefined local variable or method `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 に答える