用 c 做个壳子,里面具体功能用 Ruby 实现 这个方案可行吗?
具体需求就是非技术的亲友,同学有些数据处理的需求,类似数据抓取,图片处理,但是写好 ruby 脚本以后,发给他们不知道怎么运行,如果具体功能完全用 c 来实现的,很麻烦 要花很长时间,最好的办法 c+ruby 拼一起,双击运行
用 mruby,把 Ruby 代码写成 mgem,然后和 mruby runtime 一起编译成一个单独的 executable
lynx C 部分的代码,用了 Ruby 的 minitest 做测试
mruby-lynx 纯 Ruby 的代码,包装成了 mgem
这个是我最近刚开始写的一个类似的项目,用 Ruby 实现一套 DSL 框架,然后和 mruby 一起编程成一个 statically linked ELF executable 分发给用户,还没有太多逻辑代码,但是构建过程可以参考一下。另外这里 hack 了一下用了 musl,如果没有需求的话用原本的 glibc 那套就可以,Windows 上 mruby 也提供了一些样例配置文件。
李阿玲老师的 https://github.com/clerkma/ptex-ng Tex 排版项目也是用 mruby 做 DSL 层,可以参考 mruby 对于各种平台包括 windows 支持很好,如果是 Ruby 的话,考虑调用外部 Ruby 的 bin 也可以
如果你只是要打包 Ruby runtime 的话可以看一下
YouTube: RubyConf 2017: Packing your Ruby application into a single executable by Minqi Pan