[英]Ruby/Rails: pass arguments to command line application from rake task
如何從rake任務中傳遞參數並從Ruby / Rails執行命令行應用程序?
具體來說,我正在嘗試使用pdftk (我找不到類似的寶石)將一些PDF分成單獨的頁面。 我想傳遞的Args在< >
下面:
$ 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
返回一個retrun代碼,反引號版本返回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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.