Ruby 偿试在 Windows 7 下用 Ruby 2.7 开发桌面应用程序框架,寻求 ruby-core 技术支持

yxmmrwx · 2020年08月05日 · 最后由 rubyfansalen 回复于 2020年08月11日 · 1563 次阅读

很喜欢 ruby,现在偿试用 ruby 在 windows7 下开发一个桌面应用程序框架,已有些雏形,但碰到内存有点猛增的样子,不得门道,想问一下有没有谁知道如何联系 ruby-core 组的成员(最好是能看得懂中文的),我想知道要做个应用程序框架,能不能得到他们的技术支持,以增强信心去完成这个偿试。因为也不知道后面还会碰到什么问题,为了完成心愿,都有点想要自己捣鼓个自己能掌控的脚本语言了

坑很大,不建议用 Ruby 开发桌面软件,即使 Ruby 中用的最多的 shoes 也好多年没更新了,说明市场动力不足。 非要用 ruby 开发 桌面应用,其实需要自己慢慢地搭底层,得不偿失。 每一种语言都有适合的场景,非要选择一门自己很喜欢,但是这门编程语言不擅长的领域,效果并不理想。

用 rails 做成 web 应用?

C# WinForm/WPF 不香吗?

还是 electron 吧

Windows 7 都 EOL 了吧

以前想在厨房里面打个洞,拿起我最爱的菜刀,这刀帮我切了 N 多可口的菜肴。多好啊,打个洞不成问题吧,砍了半天,最终未能如愿,弄了个电钻,2 分钟解决。啥道理?用合适的工具解决问题,而不是你喜欢。ruby 真的是和 rails 绑在一起的,开发桌面软件?换工具吧。

我很久之前也尝试了下做一个 Windows 下的 Ruby GUI 框架,基本就是在 C-ext 里包装 Win32API ,然后展示一个比较简洁友好的(类似 Shoes / REBOL view)的编程环境。

代码在 https://github.com/luikore/cici2 可以参考下,只是现在 Ruby / Windows API 已不同跑不起来了。

有些坑分享一下:

  • Windows API 有 A 系列和 W 系列,和 UTF-8 编码的 Ruby 程序一起工作要经常转码比较麻烦。
  • 在 C 里调用 Ruby 代码,如果出现异常不捕获会 Segfault,需要了解清楚 C extension 的机制。
  • 得找机会给 Ruby GC,或者用独立线程跑 Ruby。
  • 两个世界文化很不妥贴,用 Visual Studio 编译 Ruby 可以 debug 进去。

如果让我再来一遍的话,我会选择改造成两个进程:一个 Ruby 进程负责处理事件和返回 DOM tree,一个原生 GUI 进程负责转发事件给后面的 Ruby 进程。这样就可以避掉上面的一些坑并且可以统一处理好转码。GUI 进程用纯 C 的 Win32 API 搞,或者现在流行的什么 WPF 搞都可以了。

参考书就是特别古老的 Programming Windows。

内存猛增先查是不是泄漏,再查在哪里泄漏,找 rubycore 不会有帮助

.net WPF 他不香么, 人生苦短

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册