天天看點

aardio + Ruby 可視化快速開發獨立 EXE 桌面程式

aardio 可以友善地調用 Buby,支援系統自帶 Ruby 環境。如果沒有安裝 Ruby ,aardio 會自動安裝。是以 aardio + Ruby 開發的軟體可以生成體積較小的獨立 EXE 檔案。

用 aardio 執行 Ruby 代碼

用法很簡單,aardio 代碼示例:

import win.ui;
var winform = win.form(text="執行Ruby代碼")
winform.add(
edit={cls="edit";left=26;top=16;right=737;bottom=435;edge=1;multiline=1}
)
import process.ruby;

//執行 Ruby 代碼
var out = process.ruby.exec("puts '測試UTF-8'")
winform.edit.print(out);

//解析 Ruby 表達式并傳回為 aardio 對象
var out = process.ruby.eval(`[1, 2, { name: "tanaka", age: 19 }]`)
winform.edit.print(out);

winform.show();
win.loopMessage();           

在 aardio 中運作上面的代碼:

aardio + Ruby 可視化快速開發獨立 EXE 桌面程式

process.ruby.exe() 以管道方式打開 Ruby 程序執行 Ruby 代碼,第一個參數可以是 *.rb 代碼檔案路徑,也可以直接指定 Ruby 代碼。可以添加不定個數啟動參數,也可以在一個字元串參數中寫多個啟動參數。

process.ruby.eval() 可以解析第一個字元串參數指定的 Ruby 表達式的值,傳回值會自動轉換為純 aardio 對象。

CGI 調用 Ruby

import win.ui;
var winform = win.form(text="Ruby CGI")

var code = /*
require 'cgi'

cgi = CGI.new
puts cgi.header
puts "<html><body>This is a test</body></html>"
*/

//建立測試檔案
string.save("/res/index.rb",code);

//啟動嵌入式 HTTP 伺服器,自動配置設定空閑服務端口
import process.ruby.simpleHttpServer;
var url = process.ruby.simpleHttpServer.startUrl("/res/index.rb");

//建立浏覽器控件顯示網頁
import web.form;
var wb = web.form(winform);
wb.go(url);

winform.show();
win.loopMessage();           

process.ruby.simpleHttpServer 基于 aardio 标準庫 wsock.tcp.simpleHttpServer 建立了一個嵌入式的多線程 HTTP 伺服器,自動配置設定空閑服務端口,不會與其他程式沖突,在程式退出時此 HTTP 伺服器會自動退出。很省心不需要寫多餘的代碼。

上面的 "/res/index.rb" 可以放到工程資源目錄下,釋出的時候能生成獨立 EXE 檔案。

aardio + Ruby 可視化快速開發獨立 EXE 桌面程式

建立 Ruby 互動解釋器

aardio 代碼示例:

import console
console.setTitle("Ruby 互動解釋器");

import process.ruby;
process.ruby.cmd("irb");
           

按 Ctrl + D 或者輸入 exit 以後回車可以退出。

執行 Rake 指令

import win.ui;
/*DSG{{*/
var winform = win.form(text="執行Rake指令")
winform.add(
edit={cls="edit";left=26;top=16;right=737;bottom=435;edge=1;multiline=1;z=1}
)
/*}}*/

var rakefile = /*
task :purchaseAlcohol,[:arg1, :arg2] do |t, args|
  puts "#{args[:arg1].to_i + args[:arg2].to_i}"
end
*/

//建立測試檔案
string.save("/rakefile",rakefile )

import process.ruby;
var result,err = process.ruby.rake("purchaseAlcohol[123,2]");
winform.edit.print(result,err);

winform.show();
win.loopMessage();
           

process.ruby.rake() 建立程序管道運作 rake 指令,傳回值分别為:标準輸出,錯誤輸出。

第一個參數指定 rake 指令。可選自第二個參數開始指定其他指令行參數。多個指令行參數自動合并,不在雙引号内、且包含空白或需要轉義的參數轉義處理後首尾自動添加雙引号。

需要先在工作目錄下建立 rakefile 。可以用 process.ruby.workDir 指定 Ruby 工作目錄。預設工作目錄為 "/" ,"/" 在 aardio 中表示應用程式根目錄(開發時為工程根目錄,釋出後為 EXE 所在目錄 )。

用 aardio 可視化開發圖形界面

用 aardio + Ruby 混合開發的主要目的是為了使用 aardio 的可視化開發圖形界面。

aardio + Ruby 可視化快速開發獨立 EXE 桌面程式

如果不熟悉 aardio ,建議先看一遍 aardio 開始頁的《 aardio 程式設計語言快速入門——文法速覽 》。aardio 開發界面很簡單,相關教程、範例、開源項目也很多,這裡就不多講了。