2

私はレールに非常に慣れておらず、このようなコンソールから実行するスクリプトを持っています

   $ ruby axml2xml.rb ExamPaper.apk

では、コントローラー メソッド内からこのスクリプトを呼び出して、同じパラメーターを渡すにはどうすればよいExamPaper.apkでしょうか。

試してみrequire 'axml2xml.rb'ましたが、このコード行を指すエラーが発生しましたZip::ZipFile.foreach(ARGV[0]) do |f|axml2xml.rb 'ExamPaper.apk'基本的に、コントローラーで次のようなものを作成するにはどうすればよいですか?

4

4 に答える 4

5

少なくとも 3 つのオプションがあります。

  • exec(command)
  • %x{ command }
  • system(command)

これらは異なる動作をするため、これらのコマンドの詳細については、このクイック ヒントおよび/またはこの質問の回答を必ずお読みください。

あなたの場合、バッククォートまたは%xコマンドがおそらく最良のオプションです。

value = `ruby axml2xml.rb ExamPaper.apk`
于 2012-07-04T08:58:16.507 に答える
1

systemまたはを使用してみることができますがpopen、短いタスクの場合のみ、詳細については、こちらを参照してください

タスクに時間がかかる場合は、 delayed_jobのようなものを確認し、バックグラウンドジョブまたはある種のキューを使用してジョブを実行する必要があります。このようにして、サーバーがブロックされることはなく、ユーザーはジョブが完了するまで待つ必要がありません。

于 2012-07-04T08:59:15.107 に答える
0

ルビーでは、シェルコマンドを実行するいくつかの方法があります。

system("ls")
%x("ls")
`ls`   #nice they are back ticks
exec "ls"

しかし、レールを介してそのようなコマンドを実行するために必要な権限についてはよくわかりません。

于 2012-07-04T08:58:36.517 に答える
0

シェル コマンドとして実行する場合は、次を使用します。

exec 'ruby axml2xml.rb ExamPaper.apk'
于 2012-07-04T08:54:28.103 に答える