簡體   English   中英

Ruby / Rails:從rake任務傳遞參數到命令行應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM