Slashdot Mirror


RAD with Ruby

Amit Upadhyay writes "KDE's award winning integrated development environment KDevelop, has integrated support for Ruby, an excellent and easy to use object oriented scrpting language. If you are looking for a good programming tool for quickly developing a professional one off application, Ruby (with KDE bindings) maybe just the thing for you. There is a quick tutorial and an online book to get you started. You may also want to read a quite informative comparison of Python with Ruby. If you are web developer or write enterprise applications with JAVA etc, take a look at Ruby on Rails(api), they have a nice blog too. KDevelop provides a GUI builder and Debugger for rapid application development(RAD) with Ruby, which is getting better. There is a nice tutorial on using KDE libraries with Ruby. And if you have lots of code in C/C++, extending Ruby to use them is easy.
"

27 of 162 comments (clear)

  1. But does it work on Windows? by OllySmith · · Score: 4, Insightful

    Windows support is the big thing it needs to match the flexibility of Python+Glade for RAD stuff. I'm using Python+Glade every day at the moment for prototyping and for making up quick little proof-of-concept solutions, but Windows support is neccessary for my employer to take it at all seriously (even tho I do most of my actual development on Linux).

    1. Re:But does it work on Windows? by Anonymous Coward · · Score: 3, Informative

      Here's Ruby for Windows. It includes many extras such as FreeRIDE (a Ruby editor written in Ruby):

      Ruby One-Click Installer for Windows

      With Ruby, there are even classes that let you do OLE automation.

      And calling C/C++ functions is super-easy using Ruby so you can use all those DLL functions out there.

    2. Re:But does it work on Windows? by OllySmith · · Score: 3, Insightful

      Sorry, I hadn't made myself clear - the sticking point was is there a one-click installer for the GUI prototyping environment too like there is for Python+Glade (ok, it's a handful of one-click installers for Python/PyWin32/GTK+/Glade/PyGTK, but you get my drift)? Is deployment of a Ruby+KDE(?) prototype application going to take anything other than double-clicking a few exe's to get the runtime environment setup and installed? I may be completely wrong (and too lazy to do the research - welcome to Slashdot!), but last time I checked, KDE and Windows weren't a very happy couple.

  2. What the hell is this crap?! by Mmm+coffee · · Score: 4, Insightful

    Don't get me wrong, I'm quite the Ruby fan myself. However, what the hell kind of story is this? There is little to no real meat to this story, it's just a long winded ad for two Free Software applications! What's to discuss, how great these two things are? Where's the thought provoking stories from the olden days of the site?

    1. Re:What the hell is this crap?! by ryanvm · · Score: 4, Insightful

      Where's the thought provoking stories from the olden days of the site?

      This is known as "Star Wars Syndrome". It's the delusion that the content used to be good, when in reality, the sufferer was just less discriminating.

  3. Re:Ruby Rules! by Zorilla · · Score: 4, Funny

    Perl just plain drools...

    You dare badmouth Perl on Slashdot?! Take this! s/(12^\n)monkeychar6969BakerStreet(monkey(gibbon(p rocoscismonkey(mandrill))))^%52!

    --

    It would be cool if it didn't suck.
  4. Why Ruby? by Anonymous Coward · · Score: 5, Informative

    With so many other languages out there, why bother with Ruby?

    Perhaps an example would be best.

    http://www.rubyonrails.org/show/AccessControlLis tE xample

    NOTE: In the above example, the Model Code (just a handfule of lines) is what creates all the database-mapped classes and relationships. In other words, the implementation of functions used in the Example Usage were created on the fly!

    If you haven't done enough object-relational mapping using other languages to be blown away by this example, then here are 37 other reasons:

    http://hypermetrics.com/ruby37.html

    Ruby Home
    http://www.ruby-lang.org/

    1. Re:Why Ruby? by GnuVince · · Score: 3, Informative

      The equivalent is Gem and the reason it isn't mentionned is because this 37 list was written about two years before work on Gem began and the list has never been updated since then.

    2. Re:Why Ruby? by slamb · · Score: 3, Interesting
      From where I stand (don't know Ruby, rarely use SQL) the Ruby example is easy to understand, and the SQL example is far from obvious.

      To someone who uses SQL frequently, the code I gave is obvious. (It'd be even more so if slashdot allowed me to indent it properly.) And most people making code to access a RDBMS will have used SQL recently, because they just designed a schema to access. The tool doesn't do that for you.

      With object-relational tools, you need to know more than you did before. There's much more complexity and bloat in the system. And the resulting SQL is crap. There's no benefit.

      "Premature optimisation is the root of all evil"

      More accurately, "premature micro-optimization is the root of all evil". You will save a lot of effort by choosing an efficient high-level design right away. Passing around objects that tie you to an object-relational tool like this one is not an efficient high-level design.

      The point is that unless some analysis shows that that particular piece of Ruby code causes an unacceptable bottleneck within the context of the application (from the point of view of the user), then stick with the code that is shorter, simpler, easier to write and easier to maintain.

      Yes, that particular piece of Ruby code would cause an unacceptable bottleneck. In many organizations (including mine), the database server and the webserver are not the same. Imagine every round trip taking 50ms and you'll begin to understand. The number of round trips must be O(1) for acceptable performance, and the closer to 1, the better. That's not true for the Ruby code. It makes m + n round trips, where m is the number of roles for that user, and n is the number of permissions for that user. So if that's 20 (depending on how granular permissions are, that's not unlikely), that will add a second per hit. Ugh.

      I guess part of what you are saying is that there are existing (old) technologies that are better in some sense if only people would take the time and effort to learn about them, rather than chasing the flavour of the month. If that is part of your message then I whole-heartedly agree. I like fvwm!

      In part. But mostly, it doesn't make sense to add on layers of complexity unless they accomplish something for you. This layer does not, and it does take away your performance.

  5. Short version... by Cooper_007 · · Score: 5, Insightful
    KDevelop has Ruby bindings.

    That's all the news in there. I really don't understand why the submitter chose to include a whole bunch of Python vs Ruby links. The actual news bit isn't about that at all...

    Cooper
    --
    I don't need a pass to pass this pass
    - Groo The Wanderer -

    1. Re:Short version... by BalloonMan · · Score: 5, Insightful

      That's cutting it just a bit short. KDevelop now has Ruby bindings... but why? Perhaps because Ruby is gaining momentum and mindshare, which is a good (IMHO) and newsworthy thing.

      As for the Python vs. Ruby soapbox: I think it'a a valid component of the news because the two languages are fighting for mindshare in the same pool of savvy OO-script developers.

      Without getting into particulars, I must say I've been through Perl, then Python, and now Ruby, and I'm most satisfied with Ruby. Sadly, Ruby folks seem to be so busy doing cool things that they are just awful at evangelizing their language. The language a little bit younger and less polished than Python, but they're catching up fast. The inclusion in KDE is an indication of this progress.

    2. Re:Short version... by ultrabot · · Score: 3, Funny

      Sadly, Ruby folks seem to be so busy doing cool things that they are just awful at evangelizing their language.

      Really? It seems to me that all the ruby people do is evangelizing their language...

      --
      Save your wrists today - switch to Dvorak
  6. Another scripting language by putko · · Score: 3, Interesting

    I'm quite partial to scsh.
    I mention this because I understand Ruby's semantics are like Scheme (but the syntax is different, or we'd call it a Scheme).

    The intro from the scsh paper (Olin Shivers) convinced me to try it out:

    "Shell programming terrifies me. There is something about writing a simple shell script that is just much, much more unpleasant than writing a simple C program, or a simple COMMON LISP program, or a simple Mips assembler program ..."

    He's not talking about a simple shell program (like "rm -fr /") -- but something with variables, control flow, conditionals, etc.

    --
    http://www.thebricktestament.com/the_law/when_to_s tone_your_children/dt21_18a.html
  7. Crossplatform Ruby by beware1000 · · Score: 3, Interesting

    I actually wish I had had these details all in one place when I was looking afew months back (abit of googling eventually showed all those pages).
    Personally, I have found if you are really interested in RAD w/ Ruby + QT is fine for linux.

    But Wx is cross platform and free! and tools like VisualWx which has support for WxRuby certainly help.

    Unfortunately it is only on windows atm AFAIK

  8. KDevelop by Pemdas · · Score: 5, Insightful
    I love emacs. (No this is not an attempt to start a flamewar).

    Since I wanted to see what the fuss was about, I recently grabbed the most recent KDevelop and took it for a spin. It's got a ton of really, really cool stuff in there. Integration with valgrind is sweet. The debugger integration is a Good Thing. The reasonably intuitive API documentation access is great. The integration with QT designer is beautiful.

    If I were just starting to code, I'd probably use Kdevelop.

    However, I found over the course of a couple of painful days that I'm too dependent on some features of emacs to make the switch worthwhile. Quick searching. Tab indentation. Keyboard split buffers. Mouseless cut and paste.

    Some of these have equivalents in Kdevelop that would just require relearning a different way to work, which is fine, if somewhat aggravating in my personal case. But some, like tab indentation, don't. So I'm back in good old emacs.

    I hear that there may be an effort to embed emacs as one of the source code editor options, in which case I'd definitely switch. I'd probably even switch if there were some reasonable emacs-like bindings in Kate. It looks like a really cool tool generally, and I'm hopeful that I'll be able to make a switch sometime in the not too distant future.

    1. Re:KDevelop by GnuVince · · Score: 5, Funny

      I think the reason there's a KVim and no KEmacs is because the Emacs folks didn't understand that the goal was to embed Emacs into KDE, not KDE into Emacs.

  9. Ruby seems on the right track. by master_p · · Score: 3, Insightful

    Developing web applications is a nightmare, because the knowledge domain is too big and too heterogeneous.

    Ruby seems on the right track: the decision of not using thousands of XML configuration files but rather doing everything in code seems like heaven.

  10. JRuby and RDT by Headius · · Score: 5, Informative

    As long as we're dumping Ruby links, I must plug a project I work on and a project I work with daily:

    JRuby is a 100% java implementation of Ruby 1.8. The most recent release is pretty old, but the version in CVS is shaping up nicely and is getting quite stable. I joined development over a month ago, and work has been rapidly ramping up.

    The Ruby Development Tool aims to bring a full Ruby develop/test/debug environment to the Eclipse platform. It is also rapidly maturing, and may in the future use portions of JRuby for parsing and debugging. While using or developing JRuby, the RDT is a welcome companion, allowing me to stay within Eclipse when developing both Java and Ruby.

    I would also recommend tracing back to previous Ruby posts on /. for more information and links.

  11. Get out your wallet by mrbnsn · · Score: 3, Insightful

    "a good programming tool for quickly developing a professional one off application"

    All well and good, but if your professional application is proprietary (non-open), you'll need a paid-up Qt licence to go with it.

  12. Why reimplement Ruby? by kahei · · Score: 3, Interesting


    Well, the trouble is that Ruby is a great language in search of a good implementation.

    The current Ruby implementation has various weaknesses -- primitive text support is the most mentioned one (you can't step through a string char by char, I kid you not). Lack of native threading (it uses weird homemade application-level threads) some concurrency issues (it's C with lots of static variables -- I may be very out-of-date here though) and integration problems (it's very much designed with a 'C and UNIX and nothing else' mindset) are also problematic.

    Thus, a port of Ruby to the Java or .net runtime, that kept the language intact but performed text processing, threading etc via those runtimes, would be absolutely amazing. The .net one stalled, though -- maybe the Java one is doing better.

    --
    Whence? Hence. Whither? Thither.
    1. Re:Why reimplement Ruby? by WayneConrad · · Score: 3, Informative

      That's a good summary of some of Ruby's shortcomings.

      You can step through a string character by character, though. It's just not obvious how, and that's a bit of a flaw. There should probably be an obvious method like "each_char".

      If you don't mind getting your characters as numeric codes, you can use String.each_byte. It's easy to turn each byte back into a character using Integer.chr:

      "abc".each_byte do |b|
      puts b.chr
      end

      Or use String.scan:

      "abc".scan(/./) do |c|
      puts c
      end

      Ruby being Ruby, there are probably another dozen ways to do it. And, for those who wish Ruby did have a String.each_char method, just add it:

      class String
      def each_char
      scan(/./) do |c|
      yield(c)
      end
      end
      end

      And now...

      "abc".each_char do |c|
      puts c
      end

      (Please excuse the lack of indenting. /. and I can't seem to agree on how to make indenting work.)

    2. Re:Why reimplement Ruby? by kahei · · Score: 3, Interesting


      (this goes for both comments above)

      I'm referring to stepping through a string character by character -- I should have said that rather than 'char by char', which is open to misinterpretation. I meant 'text character' rather than a C 'char' type, which can indeed be done with 'each_byte'.

      For instance, a lot of strings contain Asian characters that are intrinsically more than 1 byte long, or combining characters which consist of a 'main' character and 1 (for most european languages) or more (for the nightmare that is Vietnamese) accent marks. To ruby, it's all just bytes -- if 64 A7 03 A7 04 means an 'a' with an acute accent and a dot, ruby will cheerfully give you those 5 seperate bytes and let you implement the concept of a character yourself.

      There are various libraries for Ruby that extend the string class to handle text in different languages and encodings, but this is still nothing like as good as just being able to get, set, read, write, and match characters, as I can in most other high-level environments. Unfortunately, while the concept of a text encoding is built into ruby, it is hardcoded with knowledge of a few particular encodings and it only uses them for IO -- in internal processing, it's welcome to the wonderful world of each_byte.

      All this would go away (along with many other issues) if there were an implementation of Ruby for some modern runtime environment such as Java.

      This situation and the discussions behind it is one of the things that inspired me to write this essay (which may or may not be interesting, I just mention it):

      http://www.jbrowse.com/text/unij.html

      --
      Whence? Hence. Whither? Thither.
  13. Ruby's remaining problems by fizbin · · Score: 3, Informative
    Ruby still has two big problems that prevent it from being my scripting language of choice when compatibility with others isn't at issue:
    1. I find Ruby's limited multi-language string support a bit surprising for a language that was created in Japan. Perl and python have had UTF support built into strings for... how long now? Come on, ruby, get with it. (I frankly would expect ruby to come with the swiss-army-knife character set support that you see in emacs+mule)
    2. Performance. Compared to even, say, python, ruby has performance problems. Most of the time this isn't an issue, but when it is it makes me reach back for perl. Ruby's performance should be sufficiently good so that when I find ruby isn't fast enough, I'm at the point where what I need to do is reach for a compiled language.

    Of course, any scripting language is a big disadvantage when compared to perl because only perl has CPAN. The organized central archive for extensions with support distributed as a standard module was a brilliant move by Larry Wall; every other scripting language is still playing catchup, and still no one else can compare to even where CPAN was four years ago. (RAA is better than nothing, but it's still not there. CPAN's hierarchical naming scheme, while occasionally inconsistent, was a really good idea)

    For commercial use, I'd also want some of ruby's remaining licensing issues cleaned up, but I understand that's been taken care of. (I haven't checked lately)
    1. Re:Ruby's remaining problems by Anonymous Coward · · Score: 3, Informative

      Well, it supports *Japanese* encodings! This is a shortcoming though, for some apps.

      Performance: Well, don't forget it include programmer performance. My Ruby programs are written in 1/5 the time of my Perl programs and usually have acceptable performance.

      Ruby is dual-licensed, and one of the licenses is the familiar GPL so commercial use is no problem.

  14. Someone please tell me what I gain over Python? by _am99_ · · Score: 4, Interesting

    I learned Python last winter and have not looked back to Java despite being a Java programmer since it was in wide-distribution.

    And since Python makes win32 programming easy for those who don't use Visual Studio, I have learned to be a Windows programmer over the last couple of weeks.

    What do I gain over Python by switching to Ruby? I see a lot of explainations, but as far as I can tell, in addition to the awesomeness of Python's language and libraries, these are the things that I need that I can't seem to find in Ruby(but might not be looking in the right place):

    1) Java byte-code compiling (jython)
    2) full win32 APIs
    3) full win32 COM access
    4) Complete Object Database implementation (ZODB)
    5) List-comprehension

    Someone please educate me on the advantages of Ruby over Python. Cause right now, it is hard to imagine a better language than the snake!

  15. There is only one guide to Ruby... by Copley · · Score: 5, Informative

    You have to read this. It's more than an intro to Ruby... It's a mini adventure!

    Why's Poignant Guide to Ruby

    Those foxes! That cat! The crazy goat!

    --
    I am bald
  16. Why not? by willCode4Beer.com · · Score: 3, Insightful

    I discovered Ruby a while back after reading Dave Thomas' "The Pragmatic Programmer". One of his suggestions was to learn a new programming language each year. I psuedo-randomly picked Ruby. It has some interesting and unique features, that have helped me later on with C++ and Java programs.

    One of the advantages of learning new languages, even though they may not get used professionally, is the ideas and metaphors that come with the language. Each language was designed to solve a problem, and almost every programming language excels in the problem space for which it was designed. Each also leads to a new way of thinking and approaching a problem (flow, lists, objects, aspects).

    By learning from the experiences of others, we can become better programmers and build better programs. We always here why YAPL? or YASL? I say why not? You don't have to use every little language that pops up at work. But, if you learn about the thought processes behind it, you can apply the solutions in other languages.

    The article discusses doing RAD in KDevelop. This isn't for enterprise apps but, for getting proof of concepts or prototypes together quickly. I seem to remember a while back an article about doing KDE RAD with JavaScript and DCOM. That was some cool stuff. I played with it and was able to get an app together in a matter of minutes.

    Can't we all drop the negative attitudes for a bit and remeber why we got into programming?

    --
    ----- If communism is a system where the government owns business, what do you call a system where business owns govern