views:

748

answers:

7

Is there any way besides Shoes to develop and distribute cross-platform GUI desktop applications written in Ruby?

I come to believe that general bugginess of _why's applications is exceptionally crippling in case of Shoes, and anything more complex than a two-button form is a pain to maintain.

RubyGTK, wxRuby, etc seem to be promising, but they do not solve the issue of distributing an app in a way that doesn't require Ruby pre-installed on users' computers — and libraries like ruby2exe seem to be horribly out-of-date and incomplete.

Generally — what is the current fad?

BTW: if there is a really easy solution to this in Python, I may consider redoing the stuff I'm up to in Python.

+2  A: 

The state of affairs is pretty bad. The most reliable method at present is probably to use JRuby. I know that's probably not the answer you want to hear, but, as you say, ruby2exe is unreliable, and Shoes is a long way off (and isn't even intended to be a full-scale application). Personally, I dislike forcing users to install GTK or Qt or wxWidgets, but the JVM is fairly ubiquitous.

Pesto
That's indeed not exactly the kind of answer I want to hear, yet I don't have many options, and among them JRuby is far from being the worst one.
apostlion
+10  A: 

I don't know about ruby2exe, but py2exe works perfeclty fine. Even with librairies like wxWidgets. Edit: you don't even have to ask the user to install wxWidgets, it's bundled with the app (same goes for py2app)

I use it for my very small project here.

For the Mac crowd, py2app works fine too with wxWidgets.

Loïc Wolff
Yeah, I haven't used py2app, but py2exe is excellent.
Pesto
Didn't really touch it as a developer, but used py2exe bundled apps several times, and the installing/using/uninstalling experience was quite seamless.
apostlion
I also use py2exe + wxPython. The py2exe documentation isn't the best but I've always got it to do what I wanted.
FogleBird
Throw in InnoSetup for creating an installer and you have a complete solution.
FogleBird
+5  A: 

I don't know about Ruby, but the standard for Python is py2exe to create Windows binaries. For me, the cross-plattform pyinstaller has worked well, once. For your GUI, TkInter is the standard. A lot of people like wxPython. All those are fairly actively developed. I suggest playing a little bit around with these options to decide whether Python is the better choice.

stephan
A: 

Depending on how far you development is, Shoes is pretty good. Its basically it's own Ruby Distribution. It may be a bit hidden (in the files menu), but it allows you to package your application for all 3 platforms without having that Shoes startup screen.

The rendering engine behind it is Cairo.

Skade
The packaging qualities of Shoes are actually pretty good. Yet, the framework itself is far from ideal— start working with IO/filesystem heavily, and you'll see what I mean.
apostlion
I was purely referring to the packaging, thanks for clarifying.
Skade
+5  A: 

For Ruby, the One-Click Ruby Application Builder (OCRA) is emerging as the successor to RubyScript2Exe.

Ocra works with both Ruby 1.8.6 and 1.9.1, and with wxRuby. Supports LZMA compression for relatively compact executables.

David Mullet
Thanks for the suggestion!
apostlion
.exe format only though, rather than x-platform. At least you can depend on Ruby/Python being installed on Macs, but you still need to package up your application as a bundle for it to be recognised.
JulesLt
A: 

I've read about (but not used) Seattlerb's Wilson, which describes itself as a pure x86 assembler, but it doesn't sound like it'd be cross-platform or GUI.

Andrew Grimm
A: 

I don't think anyone really answered his question.

As for me, I use VB to do Shell() calls to Ocra compiled Ruby scripts. It works pretty well and allows me to create apps that run in all modern OS.

Linux testing is done by using Wine to run and ensuring that I use a pre .NET version of VB for the .exe compilation.

Cuervo's Laugh
I don't quite follow the last sentence - i.e. why Wine is involved rather than straight native execution on Linux? Is it actually required??
JulesLt