rake タスク内から引数を渡し、Ruby/Rails からコマンドライン アプリケーションを実行するにはどうすればよいですか?
具体的には、pdftk (同等の宝石が見つかりません) を使用して、いくつかの PDF を個々のページに分割しようとしています。渡したい引数は< >
以下のとおりです。
$ pdftk <filename.pdf> burst output <filename_%04d.pdf>
rake タスク内から引数を渡し、Ruby/Rails からコマンドライン アプリケーションを実行するにはどうすればよいですか?
具体的には、pdftk (同等の宝石が見つかりません) を使用して、いくつかの PDF を個々のページに分割しようとしています。渡したい引数は< >
以下のとおりです。
$ pdftk <filename.pdf> burst output <filename_%04d.pdf>
rakeタスクのrubyコード:
`pdftk #{input_filename} burst output #{output_filename}`
次のこともできます。
system("pdftk #{input_filename} burst output #{output_filename}")
system()
trueまたはfalseを返すだけです。システムコールが生成する出力をバックティックまたは%x()
返します。通常はバックティックが推奨されますが、気にしない場合は、を使用できますsystem()
。より簡潔なので、私は常にバックティックを使用します。
詳細はこちら: http: //rubyquicktips.com/post/5862861056/execute-shell-commands
例:
filename = 'filename.pdf'
filename_out = 'filename_%04d.pdf'
`pdftk #{filename} burst output #{filename_out}`
また
system("pdftk #{filename} burst output #{filename_out}")
system
再実行コードを返し、バックティックバージョンはSTDOUTを返します。
stdoutとstderrが必要な場合は、次を使用することもできますOpen3.open3
。
filename = 'filename.pdf'
filename_out = 'filename_%04d.pdf'
cmd = "pdftk #{filename} burst output #{filename_out}"
require 'open3'
Open3.popen3(cmd){ |stdin, stdout, stderr|
puts "This is STDOUT of #{cmd}:"
puts stdout.read
puts "This is STDERR of #{cmd}:"
puts stderr.read
}