使用Aardio和Ruby快速开发独立EXE桌面程序

发表时间: 2022-09-30 15:44

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 中运行上面的代码:

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.newputs cgi.headerputs "<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 文件。


创建 Ruby 交互解释器

aardio 代码示例:

import consoleconsole.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 ,建议先看一遍 aardio 开始页的《 aardio 编程语言快速入门——语法速览 》。aardio 开发界面很简单,相关教程、范例、开源项目也很多,这里就不多讲了。