Use Ruby to create Win executable?

M

Manuel Souto pico

Hi,

I would like to post a general question about the convenience of using
Ruby to program a simple application consisting of an interface where
the user inputs some options and that interacts with another program's
API to create some files.

I'll be doing this in Windows, by the way. I have Cygwin too.

I was suggested using VBScript to create a HTA application, because it's
easy to program and easy to run, but I wanted to give Ruby a chance
first. Java would be okay too but it take me much longer to learn.

So here are my questions (1 and 2 are the important ones):

1. I think it's entirely possible to create a GUI with Ruby (either with
Ruby itself or with Shoes). Is this right? (I'm more familiar with
writing Perl scripts that I execute on the command-line, I have no
experience with writing GUI).

2. I think it's possible to convert the final program to a executable
file that I can distribute to Windows users for them to run the program
without the need to install Ruby first. Is this right? How should I do
that? How well does it work?

3. A subjective, optional question, for whoever feels like answering and
thinks they're not too biased. How do you think Ruby compares to
VBScript in terms of both difficulty to learn from scratch and
usefulness once you learnt? I only know some perl and php.
 
M

Manuel Souto pico

Sorry, I forgot to say goodbye and to thank you in advance for any
hints.

Cheers, Manuel
 
M

Marvin Gülker

Hi Manuel,
1. I think it's entirely possible to create a GUI with Ruby (either with
Ruby itself or with Shoes). Is this right? (I'm more familiar with
writing Perl scripts that I execute on the command-line, I have no
experience with writing GUI).

Ruby itself does not provide a GUI, but there are serveral different GUI
toolkits for Ruby out there, Shoes is only one of them. If you have the
Tk sources installed on your computer (I think you can get them from the
TCL/Tk website for Windows) you should be able to use the "tk" library
of Ruby's standard library. You could also use FxRuby or wxRuby (my
favourite) or QtRuby, only to name a few. The most are available through
RubyGems (type gem --version on the command line to see if it was
installed with Ruby [ what is the regular case with Ruby 1.9.x ] )
2. I think it's possible to convert the final program to a executable
file that I can distribute to Windows users for them to run the program
without the need to install Ruby first. Is this right? How should I do
that? How well does it work?
For this goes the same as for 1. - there are serveral solutions to that.
For long times rubyscript2exe.rb was *the* Windows executable generator
(it wasn't a compiler), but nowadays you should use the Gem ocra
(One-Click Ruby Application Builder) which does also care about the Gems
needed for your scripts and is currently maintained.

Marvin
 
M

Marc Heiler

1. I think it's entirely possible to create a GUI with Ruby (either with
Ruby itself or with Shoes). Is this right? (I'm more familiar with
writing Perl scripts that I execute on the command-line, I have no
experience with writing GUI).

There are plenty of GUI bindings for ruby towards i.e. ruby-gtk, qt,
FOX, wxwidgets and so on. Ruby is pretty much in the same boat as perl
is here.

I think you might also invoke some basic window GUI components like an
alertbox and similar via ruby only. But I think a nice toolkit would be
a better choice in the long run.
 
M

Manuel Souto Pico

Hi Marvin,
you should use the Gem ocra
(One-Click Ruby Application Builder) which does also care about the Gems
needed for your scripts and is currently maintained.

I want to focus on this part for now. I've tried to install and run ocra
with a simple ruby file, but something didn't work. Let me open a new
post for that, and once I've sorted that out I'll come back here and
comment more.

Thanks to the both of you for your replies!
Manuel
 
M

Marvin Gülker

Marc said:
I think you might also invoke some basic window GUI components like an
alertbox and similar via ruby only.

Yes, on Windows you can use features like the MessageBox() function from
the Windows API. There are bindings to the Windows API in Ruby's
standard library, but they have been deprecated in Ruby 1.9, so I would
recommend you to use a gem here, too. win32-api does a very good job:

require "rubygems" #if you're running pre-1.9
require "win32/api"

#Values just out of my head, I have no Windows to try at the moment
#see MSDN (or Google ;-) ) for the correct values
MB_OKCANCEL = 1
MB_ICONERROR = 16
ID_OK = 1
ID_CANCEL = 2

#Retrieve function "MessageBox" from "user32.dll"
msgbox = Win32::API.new("MessageBox", 'LPPI', 'I', "user32")
#This should display a dialog box with a white-on-red X and two
buttons
ret = msgbox.call(0, "An error occured. Do you want to continue?",
"Error", MB_ICONERROR | MB_OKCANCEL) #The 0 indicates there's no parent
window
if ret == ID_OK
#Continue your operation...
elsif ret == ID_CANCEL
#Cancel your operation...
end

Marvin
 
J

James Britt

Manuel said:
Hi,

I would like to post a general question about the convenience of using
Ruby to program a simple application consisting of an interface where
the user inputs some options and that interacts with another program's
API to create some files.

I'll be doing this in Windows, by the way. I have Cygwin too.

I was suggested using VBScript to create a HTA application, because it's
easy to program and easy to run, but I wanted to give Ruby a chance
first. Java would be okay too but it take me much longer to learn.

Use JRuby + Monkeybars for effortless GUI building, then use Rawr to
create the exe file.

So here are my questions (1 and 2 are the important ones):

1. I think it's entirely possible to create a GUI with Ruby (either with
Ruby itself or with Shoes). Is this right? (I'm more familiar with
writing Perl scripts that I execute on the command-line, I have no
experience with writing GUI).

For anything serious, look at using Swing + JRuby.

2. I think it's possible to convert the final program to a executable
file that I can distribute to Windows users for them to run the program
without the need to install Ruby first. Is this right? How should I do
that? How well does it work?

Rawr bundles up everything needed to run the app. The end user just
needs to have Java (almost guaranteed).
3. A subjective, optional question, for whoever feels like answering and
thinks they're not too biased. How do you think Ruby compares to
VBScript in terms of both difficulty to learn from scratch and
usefulness once you learnt? I only know some perl and php.


VBScript is OK for short hacks and scripting Office apps. Not for
anything substantial.


--
James Britt

www.jamesbritt.com - Playing with Better Toys
www.ruby-doc.org - Ruby Help & Documentation
www.rubystuff.com - The Ruby Store for Ruby Stuff
www.neurogami.com - Smart application development
 
R

Richard Conroy

[Note: parts of this message were removed to make it a legal post.]
I was suggested using VBScript to create a HTA application, because it's
easy to program and easy to run, but I wanted to give Ruby a chance
first. Java would be okay too but it take me much longer to learn.


Ruby would be more interesting too ... ;-P

1. I think it's entirely possible to create a GUI with Ruby (either with
Ruby itself or with Shoes). Is this right? (I'm more familiar with
writing Perl scripts that I execute on the command-line, I have no
experience with writing GUI).


If you have no UI experience, Shoes is awesome. Simple and to the point.
All of the other Ruby native UI options do have a non-trivial learning
curve.

2. I think it's possible to convert the final program to a executable
file that I can distribute to Windows users for them to run the program
without the need to install Ruby first. Is this right? How should I do
that? How well does it work?


The options are limited - via JRuby you cab use Rawr to achieve this. There
is
also the RubyScript2exe option, but I am not sure how maintained this is.

Also, shoes itself provides a windows (and Mac) packaging solution that
works as you describe (downloading necessary binaries on demand).

3. A subjective, optional question, for whoever feels like answering and
thinks they're not too biased. How do you think Ruby compares to
VBScript in terms of both difficulty to learn from scratch and
usefulness once you learnt? I only know some perl and php.


You are not going to get much subjectivity here from me .... ;-P

Ruby is simply far more versatile than the other options (PHP, VBScript,
can't comment on perl). You learn it for shell scripting purposes, testing,
building software etc. and then
somehow your knowledge is applicable in entirely different domains.

Its a much more interesting leaning experience. The initial learning curve
is not steep,
but it is a huge curve, and you are productive at a very early part of it.

regards,
Richard
 
M

Manuel Souto Pico

Hello,

Due to limited time (it had to be done by tomorrow, when I go on
holidays) I'm developing the first part of the program as a web
application with PHP and Javascript (with which I'm more familiar), and
that'll do the trick for now. Later on, I want to keep exploring Ruby
and if possible migrate and expand this application.

I'm very interested in Ruby and I am very happy with the response from
other users like you in this forum. I just wanted to say that and thank
you for your help so far. Hopefully I'll get to something when I come
back from my holidays in a few days. So don't think that I asked and
then disappeared ;)

Cheers, and happy August.

Manuel
 
P

paron

Hello,

Due to limited time (it had to be done by tomorrow, when I go on
holidays) I'm developing the first part of the program as a web
application with PHP and Javascript (with which I'm more familiar), and
that'll do the trick for now. Later on, I want to keep exploring Ruby
and if possible migrate and expand this application.

I'm very interested in Ruby and I am very happy with the response from
other users like you in this forum. I just wanted to say that and thank
you for your help so far. Hopefully I'll get to something when I come
back from my holidays in a few days. So don't think that I asked and
then disappeared ;)

Cheers, and happy August.

Manuel

Even if I were in a big hurry, I'd give Titanium a look, too.
http://www.appcelerator.com/products/titanium-desktop/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,231
Members
46,820
Latest member
GilbertoA5

Latest Threads

Top