簡體   English   中英

如何包裝在Ruby中使用的已編譯命令行工具?

[英]How do I wrap a compiled command line tool for use in Ruby?

我已經為我的機器編譯並測試了一個開源命令行SIP客戶端,我們可以假定它具有與商店中所有其他機器相同的體系結構。 我的意思是,我已經將已編譯的二進制文件成功傳遞給了商店中的其他人,他們可以使用它們。

該工具具有相當深奧的調用,在執行之前先將一個簡單的bash腳本通過管道傳遞給它,如下所示:

(sleep 3; echo "# 1"; sleep 3; echo h) | pjsua sip:somephonenumber@ip --flag_1 val --flag_2 val

請注意,領先的bash腳本是程序功能的重要組成部分,並且該行本身似乎是使用的最佳實踐。

在構想我的問題時,我正在考慮以下方面:

  1. 我認為我不能指望商店中有很多其他人可以自己編譯二進制文件

  2. 在商店中擁有通用的系統架構,可以合理地認為一個倉庫可以容納最新的版本

  3. 有一種使用Ruby調用該工具的方法,對於大多數人來說將是最有用和最易用的。

  4. 通過的主要bash腳本需要完全可擴展。 這些表示可修改的“方案”,例如,在這種情況下:

    1. 呼叫
    2. 等三秒鍾
    3. 按1
    4. 等三秒鍾
    5. 掛斷
  5. 可能有多達十二個標志。 可能是配置文件。

創建一個以其核心為核心的命令行工具已經被編譯過,這是合理的做法嗎?

創建使用命令行工具的gem似乎是合理的。 我唯一要說的是使用system('which psjua')檢查命令是否可用system('which psjua')如果尚未安裝system('which psjua')引發提示錯誤。

因此,似乎我缺少的詞匯是擴展。 是有關在Ruby Gem中包裝Ruby C擴展的精彩堆棧討論。

這是有關使用擴展名創建寶石的寶石指南的鏈接

顯然,不僅完成了它,而且圍繞它的使用有一系列最佳實踐。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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