Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Rolling With Ruby On Rails

Posted by michael on Fri Jan 21, 2005 12:10 PM
from the keep-those-doggies-rolling-rawhide dept.
Bart Braem writes "The Ruby community is abuzz about Rails, a web application framework that makes database-backed apps dead simple. What's the fuss? Is it worth the hype? Curt Hibbs shows off Rails at ONLamp, building a simple application that even non-Rubyists can follow."
+ -
story
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • Played with it (Score:5, Informative)

    by tenchiken (22661) on Friday January 21 2005, @12:16PM (#11433216)
    And did a quick application with Ruby on Rails already. If you are confortable with Perl, you may find this easier to deal with then Python and it's love of whitespace. The object model is much more developed then either python or perl, but it still retains much of the flexability of the other two systems.

    Ruby has already inspired a few efforts to duplicate the technology in Java and in .NET. Since the core technology behind RoR is open classes, and the ability to add accessors and functionality on the fly, the other languages just don't cut it.

    The usual warnings apply. Implicit code is easier 90% of the time, but that other 10% is painful to debug. With large projects you can prototype fast, but maintaining may be much more difficult.
      • Re:Played with it (Score:5, Informative)

        by Merk (25521) on Friday January 21 2005, @01:24PM (#11433953) Homepage

        Once you get used to the idea of passing blocks of code around, you'll love it, and won't be able to go back to Python... er... I mean, won't be able to go without it.

        The canonical example is the iterator. Given an array pets containing ["dog", "cat", "fish"]:

        pets.each { |pet| puts pet }

        Will return
        dog
        cat
        fish
        If you want to print out the uppercase versions

        pets.each { |pet| puts pet.upcase }

        Or if you want to add some text:

        pets.each { |pet| puts "I love my pet #{pet}" }

        Big deal, right? Not much different from a for loop. But blocks are amazing when dealing with things like a database. You can put all the setup, teardown and error-handling code in a method that's hidden from the user, and all they have to do is pass in the block they want the DB object to execute:

        require 'dbi'

        DBI.connect('DBI:Mysql:test', 'testuser', 'testpwd') do | dbh |

        puts "inserting..."
        sql = "insert into simple01 (SongName, SongLength_s) VALUES (?, ?)"
        dbh.prepare(sql) do | sth |
        1.upto(13) { |i| sth.execute("Song #{i}", "#{i*10}") }
        end

        puts "selecting..."
        dbh.select_all('select * from simple01') do | row |
        p row
        end

        puts "deleting..."
        dbh.do('delete from simple01 where internal_id > 10')

        end

        Unfortunately, slashdot eats my indentation, but fortunately, Ruby not being as picky about whitespace as *some languages*, that doesn't matter. Note that all that code is wrapped in a DBI.connect() call, which connects before it starts executing the block, and disconnects after. There's no "close" call required, it's all wrapped up for you.

  • by Anonymous Coward on Friday January 21 2005, @12:19PM (#11433259)
    A categorized collection of ruby links can be found here in a nicer format:

    http://www.rubygarden.org/ruby?RubyOnTheNet [rubygarden.org]

    Interactive ruby resources:

    irc://irc.freenode.net/ruby-lang - the #ruby-lang channel is popular. More info at RubyOnIRC

    http://www.ruby-forum.org/bb/ - a forum for ruby novices to ask questions

    news://comp.lang.ruby - the ruby newsgroup

    Ruby websites:

    http://www.ruby-lang.org/ - ruby home

    http://www.ruby-doc.org/ - ruby docs and online reference

    http://www.rubyforge.org/ - rubyforge ruby projects

    http://raa.ruby-lang.org/ - ruby application archive

    Ruby Code Examples and Snippets:

    http://pleac.sourceforge.net/pleac_ruby/ - ruby pleac

    http://www.rubygarden.org/ruby?RubyOnlineCookboo k - ruby cookbook

    Popular ruby and ruby-related projects:

    http://rubyinstaller.rubyforge.org/wiki/wiki.pl - ruby installer for Windows

    http://rubyforge.org/projects/rubygems/ - rubygems ruby package manager

    http://www.yaml.org/ - ruby 1.8 includes built-in yaml support

    http://www.rubyonrails.com/ - web framework in ruby

    http://rubyforge.org/projects/instiki/ - wiki in ruby
  • by MrAsstastic (851637) on Friday January 21 2005, @12:19PM (#11433264)
    Back where I am from, using rails all night to code a project can land you in trouble with the law, drain you financially and mentally, and leave you with a nosebleed. Best stay away from this nonsense.
  • by Anonymous Coward on Friday January 21 2005, @12:20PM (#11433277)
    The biggest drawback to RubyOnRails is that you wont find it installed on very many webhosts.

    I given it a testdrive, and RubyOnRails is an amazingly fast and powerful way to develop webapps, but even so, it's been around for a while and still 99% of webhosts only stick to tomcat & PHP/MySQL, so that's what I code for. Even Python w/o Rails has more ISP support.

    My question is: When will RubyOnRails get "popular enough" to make inroads? I'm looking forward to it, because it means I can be way more productive and get a head start on all the other PHP "solution providers" out there.

  • by Metteyya (790458) on Friday January 21 2005, @12:31PM (#11433381)
    I like Ruby, even before I got to know Rails. The only thing I regret is that LAMR sounds really bad.

    I develop webpages with LAMR - imagine saying something like that ;).
  • by Paradox (13555) on Friday January 21 2005, @12:34PM (#11433409) Homepage Journal
    Rails is an incredibly good framework for Ruby, that really shows off its power and makes it easy to get a web application going, but it's not all that Ruby has to offer.

    Ruby is full of incredible libraries and frameworks like this, especially where text processing and web development are concerned. It's because Ruby has such a rich set of features.

    Anyone who likes Rails should dig deeper. Heck, Ruby's standard library comes with some amazing things. Ruby also has a framework called RubyGems [rubyforge.org],
    which is very much like Perl's CPAN integration or CommonLisp's ASDF framework.
  • Rails is awesome (Score:5, Interesting)

    by swimmar132 (302744) <joe@nOsPAM.pinkpucker.net> on Friday January 21 2005, @12:58PM (#11433652) Homepage
    I've almost finished developing a real estate site using it. First time using Rails.

    In PHP or other related language, probably would've taken me about 80 hours or so to develop the site. In Rails, I've spent maybe 15 hours or so total on it. And I'm charging $8k for the site. Admittedly, that doesn't include time working on the graphics or design of the site, just the backend, search, etc.

    So if you look at it from one perspective, I went from making $100 an hour to $533 an hour using Rails!
  • TMTOWDI (Score:5, Insightful)

    by ryantate (97606) <ryantate@ryantate.com> on Friday January 21 2005, @01:09PM (#11433788) Homepage
    Perl has its own rapid application development framework, Maypole. Here are some screenshots [perl.com] from a Perl.com article where Simon Cozens sets up an online sales catalog in 11 lines of code. (Here's a followup article [google.com], and the Maypole home page [google.com].)

    These systems all demo well because the developer gets to decide what functionality to demo, and it not coincidentally happens to be the functionality the framework was designed to easily support. The real test of the system comes when you want to do something the designer did not anticipate, and you find out how flexible the system is and how sensible the designer's instincts are.

    With these environments I think time will tell, with most developers watching the few willing to take the risk of investing the time needed to learn the framework and how to customize it extensively.
  • by drew (2081) on Friday January 21 2005, @03:51PM (#11435677) Homepage
    i've tried rails a little bit, and jsp before that, and wasn't particularly impressed with either. is there a reason all web frameworks require a weird directory structure? rails seems better then jsp because it doesn't require an arcane descriptor file, but it still requires you to use a funky directory structure, which means the structure of your application doesn't seem to correspond in any meaningful way with your web site structure.

    why can't someone build a decent framework that follows the simple "directories are directories and files are pages" model used by asp, php, cgi, etc.

    and what's with the database naming conventions? the author kind of brushes it off at the end with this statement: "Even if you have to use a legacy database that does not use the Rails naming conventions, you don't have to give up the productivity advantages of using Rails--there is still a way to tell Rails explicitly what table and column names to use." personally I would not use those conventions no matter what database i was using, nor would any decent database developer or administrator i have ever known.

    at any rate, at work i program in whatever language they tell me- currently asp+jscript, before that php. for personal projects, my current favorite is perl's HTML::Mason. all the benefits of php (and then some) without the awful language conventions.
    • by Minam (456447) on Friday January 21 2005, @12:34PM (#11433401) Homepage

      You might want to tell that to Basecamp [basecamphq.com], 43 Things [43things.com], and Tada Lists [tadalist.com], since they obviously have no idea that Rails isn't good for anything of that magnitude. Might also mention it to all the thousands of people that use those sites, daily, and to the handful of developers who built and deployed those sites in a fraction of the time and cost of other web solutions.

      Then again, maybe you shouldn't...

    • by Paradox (13555) on Friday January 21 2005, @12:43PM (#11433510) Homepage Journal
      Well, most of the article is setup. But I do agree the article is less than a stunning demo of rails. Instead, you might want to fire up the video at www.rubyonrails.com [nextangle.com] which walks you through a 10 minute application build.

      It's extremely cool to watch someone set up a working webapp that fast.

      But I have to take issue with:

      Take a look at this example. It's incrediblyl complicated and all it does is display a horrible little form that lets you query cookbook recipies!
      Half of the darn article is setting up MySql and installing Ruby and Rails from scratch on a windows machine. Do you have any idea how much harder this crap is to write in other frameworks? You'd have to write at least 2x as much code. No one has an Active Record class as good as Rails'. You'd double the code count just doing the SQL linkage!

      It's one thing to be unimpressed, but it's another to know jack shit about the domain and say it's all worthless. Anyone who's ever made a web application will appreciate it.

    • This is not insightful. If you want to see how well it scales look all all [basecamphq.com] the [43things.com] production [tadalist.com] grade [hieraki.org] applications [leetsoft.com] out there. The source to hieraki [hieraki.org] is freely accessible.

      Rails is NOT your run the mill proof of concept framework. Its the next level of programming environment right now and here. Available for you to download under MIT license. The people who use it make applications magnitudes faster than the people who aren't. Single people can be as productive as whole teams.

      There hasn't been an improvement

    • by MooseByte (751829) on Friday January 21 2005, @12:41PM (#11433477)

      "If you are using Windows though, looks like this could be very useful."

      Only if it can match the stability and security of IIS that we've come to depend on. Otherwise it's just another shoddy product built by communists for communists.

    • Re:Nice framework... (Score:4, Interesting)

      by Paradox (13555) on Friday January 21 2005, @12:55PM (#11433619) Homepage Journal
      Sir, may I ask you exactly how you're going to get your Java framework of choice to connect, comprehend, and dynamically bind to a SQL table in only 2 lines of code? Because that's what you're going to have to do to beat Rails in code count. For instance, if we have a table called "Clients". It has lots of fields.

      If we want to link it to Rails, we'd use the following code:

      class Client < ActiveRecord::Base
      end
      Yeah. That's really it. And you can specify relations with a simple micro-language in the class declaration (that's based out of ruby syntax). Once you've done this, you can write code like this:
      my_client = Client.find( 26 ) # Find by primary key
      my_client2 = Client.find_by_manager_id( 12 ) # Find by some field

      # This code prints out each client's id and name
      Client.find_all.each do |c|
      puts "#{c.id}: #{c.name}
      end
      And Rails makes the action mappings just as simple. I'd eat my old shoes before I'd believe that there is some lurking JSP/Servlet framework that has evaded my sight (and everyone's sight, really) that can do better. I know Java's limitations pretty well.
      • In rails you don't have to do any of that, it dynamically finds it!

        Thats a great concept as long as everything goes as planned. But wait until it 'dynamically finds' the wrong thing. Try debugging that nightmare. (Think VB Script + Option Explicit).
        • by Paradox (13555) on Friday January 21 2005, @01:00PM (#11433674) Homepage Journal
          Firstly, Rails's ActiveRecord class is very simple Ruby code, so it's naturally bug-resistant.

          Secondly, the author knows that ActiveRecord could be a source of problems, which is why it's got dozens of unit tests, covering nearly every line of code.

          Thirdly, even with all that bugs can and will sneak through, which is why ActiveRecord can, upon command, write a detailed log of its attempt to dynamically bind and create the classes you want. The logging is at the message-passing level of Ruby, which is nearly as atomic as you can get (you could hack the interpreter to go further, but that'd be pointless).

          The dark ages of hideous bugs in dynamic code are gone my friend. We have the tools and techniques to make code of this type both safe and maintainable. Don't be afraid of it.
      • by Jerf (17166) on Friday January 21 2005, @01:29PM (#11434017) Journal
        I'm actually a Python partisan (like the philosophy and user base better), but the same basic thing applies to Ruby too: If your first criterion for evaluating a tech like this is "Is it written in Java/C++/Visual Basic?" or whatever other legacy language you're thinking of, you've already lost.

        Learning Python or Ruby and using it will pay off in mere weeks vs. Java, C++, Visual Basic, and most other things like that. Pay off might be a month for C#, but only if you use C# like an expert to start with. (Also, if you use C++ like a mega-expert, but even then, to use it that way you lose with the staggering quantity of typing that takes... and I mean keypresses, not object typing!)

        Ruby and Python have done everything they can short of directly downloading themselves into your brain. You have to expect to exert some effort to reap the benefits. And like I said, it pays off in mere weeks, so opportunity-cost-wise, you lose big for delaying it.

        (Note "you" here may be your company, if you only program professionally. In that case, you personally may not have any choice, but the company is still losing big.)
      • by JamesOfTheDesert (188356) on Friday January 21 2005, @03:26PM (#11435367) Journal
        Besides, if you do things The Right Way, when programming in OOP, the design takes a huge part of your time... and I don't really see how Java or Ruby differ in that...

        Um, yes and no. If your point is that there is a certain amount of abstract thinking required before you write any code, then yes, they will share a comon process. But, after coding in a language for a while, you tend to start thinking in the terms and abstractions the language facilitates.

        So, in perhaps the common case, Java designers will soon be thinking in terms of factories and adaptors and filters and all sort of entities that are often required in Java but which are extraneous in an agile language.

        And the time spent on those extranous objects is not time spent adressing the actual problem, but time wasted working around or through the demands of Java.

    • FlexGrid? (Score:5, Funny)

      by ackthpt (218170) * on Friday January 21 2005, @12:57PM (#11433646) Homepage Journal
      Ruby doesn't have FlexGrid ocx which basically makes it useless for database apps.

      FlexGrid? FLEXGRID?!?!

      Implementation of FlexGrids is responsible for extreme stress, male pattern baldness, genital warts, dry heaves, infertility, webbed toes, seeing spots, loss of super powers, carpal tunnel syndrome, diarrhea, dandruff, dispepsia, gas, fingernail rot, yellowy wax buildup, stink foot, Plantars warts, incontinence, communism, crusty boogers, arthritis, bursitis and and cooties. The only treatment is 500mg of Dammitol, fiftytwo times a day.

      You, sir, are a maniac.