Ruby feasibility?

Good morning,

I know just about zero about Ruby but the company I work for is doing
some Ruby development and I need to eventually learn the language.
There is a program re-write project I need to complete and I was
wondering if Ruby would be appropriate for it.

The app I need to write is a communication app. It reads a list of
devices from a database and uses a bank of modems/phone lines to call
out and collect data from them at different times. There are hundreds
of devices so the app is always running, though it’s idle periodically
throughout the day. It needs to have a GUI so someone can see at a
glance what it’s doing, and it needs to be multi-threaded. It would
most likely be running on Windows since that’s the only GUI OS we
currently have running (we have Solaris and Linux boxes but they’re only
console, not GUI).

Would Ruby be appropriate for this task? I’ve read that it can be
sluggish and that GUI programming is somewhat lacking. But I also don’t
know how old those comments were or how Ruby has progesses since they
were made. Or would something like Java, C#, etc, be better suited?

Any input greatly appreciated!

Thanks in advance,
Dave

Dave K. [email protected] writes:

of devices so the app is always running, though it’s idle periodically
throughout the day. It needs to have a GUI so someone can see at a
glance what it’s doing, and it needs to be multi-threaded. It would
most likely be running on Windows since that’s the only GUI OS we
currently have running (we have Solaris and Linux boxes but they’re only
console, not GUI).

Would Ruby be appropriate for this task?

Definitely.

I’ve read that it can be
sluggish and that GUI programming is somewhat lacking. But I also don’t
know how old those comments were or how Ruby has progesses since they
were made.

Well, I would rather provide the user interface as an embedded web
server, so this application can run in background and can be
monitorized from the LAN from any web browser. There are libraries to
allow you to write simple web servers in ruby very easily.

Or would something like Java, C#, etc, be better suited?

I’d bet a Ruby solution would be better (easier to write, debug and
maintain). The only improvement would be to use Common Lisp, but I
guess your company isn’t prepared to jump to Common Lisp right now.
In a few years…

2009/6/16 Pascal J. Bourguignon [email protected]:

devices from a database and uses a bank of modems/phone lines to call
Definitely.
allow you to write simple web servers in ruby very easily.
Good idea! Another alternative would be SNMP if integration into some
existing monitoring framework is required.

Or would something like Java, C#, etc, be better suited?

I’d bet a Ruby solution would be better (easier to write, debug and
maintain). The only improvement would be to use Common Lisp, but I
guess your company isn’t prepared to jump to Common Lisp right now.
In a few years…

I wouldn’t bet on that a solution in Ruby is better. A Java based
solution with a Swing UI would probably be as good.

Kind regards

robert

Greetings.
Your requirement for Windows, alone, basically discounts Ruby. I use
Ruby on
a Windows PC at work and it’s the very opposite of fun. Another poster
recommended C#. I think he’s on the money.

James

On Jun 16, 3:15 pm, Robert K. [email protected] wrote:

There is a program re-write project I need to complete and I was
console, not GUI).
Well, I would rather provide the user interface as an embedded web
maintain). The only improvement would be to use Common Lisp, but I

remember.guy do |as, often| as.you_can - without endhttp://blog.rubybestpractices.com/

Although I prefer Ruby for lot of tasks over other programming
languages I would recommend you C#. Since you are already on MS
Windows platform using C# is definitely the best choice. Creating form
(s) for monitoring is very easy and development is quite fast. In
addition debugging C# applications in Visual Studio is much, much
better than you’ll find for Ruby.

Best regards,
Bosko

James H. wrote:

Greetings.
Your requirement for Windows, alone, basically discounts Ruby. I use Ruby on
a Windows PC at work and it’s the very opposite of fun.

I’ve done Ruby hacking on assorted Windows boxen for years. No problem.


James B.

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

Pascal J. Bourguignon wrote:

Dave K. [email protected] writes:

…It needs to have a GUI so someone can see at a
glance what it’s doing, and it needs to be multi-threaded. It would
most likely be running on Windows since that’s the only GUI OS we
currently have running…

Would Ruby be appropriate for this task?

The threading issue is something to look into more. Ruby threading is a
bit… odd.

I’m also not sure how you’d create a Windows GUI in Ruby, that’s worth
looking into more too.

Robert K. wrote:

I wouldn’t bet on that a solution in Ruby is better. A Java based
solution with a Swing UI would probably be as good.

Or use JRuby + Monkeybars and Swing. Best of both worlds.

Plus, if SNMP is needed, the better Java libraries can be used in place
of the the Ruby SNMP libs.


James B.

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

On 16 Jun 2009, at 16:13, Jonathan R. wrote:

The threading issue is something to look into more. Ruby threading
is a
bit… odd.

I’m also not sure how you’d create a Windows GUI in Ruby, that’s worth
looking into more too.

By loading GDI+ with Ruby/DL lol
Otherwise there’s TK which ships with Ruby.

Ellie

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net

raise ArgumentError unless @reality.responds_to? :reason

Dave K. [email protected] writes:

Good morning,

I know just about zero about Ruby but the company I work for is doing
some Ruby development and I need to eventually learn the language.
There is a program re-write project I need to complete and I was
wondering if Ruby would be appropriate for it.

If Ruby on windows is really a problem (I wouldn’t know) do the work on
a Unix
box and serve the results with a web server so you get remote access
too.
Serving web pages can range from incredibly trivial up to as
sophisticated as
you want to get.

Eddie

I’ve found it to be a little awkward, and sometimes downright
frustrating.
An excellent example of this is Thor. AMAZING Ruby app. It kicks the
pants
off of Rake. Early versions had issues with traversing directory
structures
though (I’ve since sent in patches to fix this). Sometimes its the
authors
of the libraries forgetting that Windows exists, other times it’s
Windows
failure to include developer tools (e.g. a C compiler) by default. The
fact
that Ruby reports win32, mingw and a few other values for RUBY_PLATFORM
on
Windows is equally annoying.
But yes, it’s getting better.

James

On Tue, Jun 16, 2009 at 6:54 AM, Dave K. [email protected]
wrote:

The app I need to write is a communication app. It reads a list of
devices from a database and uses a bank of modems/phone lines to call
out and collect data from them at different times. There are hundreds
of devices so the app is always running, though it’s idle periodically
throughout the day. It needs to have a GUI so someone can see at a
glance what it’s doing, and it needs to be multi-threaded. It would
most likely be running on Windows since that’s the only GUI OS we
currently have running (we have Solaris and Linux boxes but they’re only
console, not GUI).

Well, a couple of things:

What about a web-based GUI? It’s quite easy to use frameworks like
Rails,
Sinatra, etc. to build web-based interfaces to your Ruby code.

Also, bank of modems/phone lines? That sounds like a rather antiquated
way
of going about what you’re doing. You might consider entering the age
of
VoIP:

http://www.asterisk.org/

If you use Asterisk to manage the dialing/data collection, there are a
number of excellent Ruby packages for interfacing with Asterisk:

http://adhearsion.com/
http://www.snapvine.com/code/ragi/
http://rubyforge.org/projects/rami/

Would Ruby be appropriate for this task

I think if you massaged your requirements a little (as noted above) Ruby
would make this task extremely simple in comparison to other
environments.

On Jun 16, 8:54 am, Dave K. [email protected] wrote:

of devices so the app is always running, though it’s idle periodically

Any input greatly appreciated!

Thanks in advance,
Dave

Posted viahttp://www.ruby-forum.com/.

wxRuby and RubyScript2exe:

  1. they work great in windows

  2. they don’t require a framework install (thanks to RubyScript2exe)

I’ve got decent experience in windows client development with .NET and
I switched completely to ruby when I found these two.

You might also consider having a worker app do the calling and update
the database, and a gui app that users can launch when they want to
see the status.

Still, it sounds like a web gui (and server side dialer app) still
beat the pants off a desktop app for this.

Good Luck,

-matt

Thanks for all the replies/info! I’ll take all this to The Powers That
Be and we’ll see where I end up! :slight_smile:

Thanks again!

    Dave