posted on dimanche 14 novembre 2004 04:16 par jbe

Ruby, état du lard

De bon matin, et parce que j'ai été ammené il y a peu à utiliser un de mes langages favoris, le Ruby, je vais me fendre au fil de quelques articlets à venir de divers points comme :
  • La découverte du Ruby
  • Tous ces petits plus qui vous changent la vie en Ruby
  • LE framework ultime pour le développement web en Ruby
  • Et surement d'autres choses...
En attendant, et comme il serait dommage de ne pas vous appater avec un petit peu de code, voila un lien fort sympathique : Comme vous pouvez le constater en rafraichissant la page, la liste de lien est aléatoire.
Vous pouvez par exemple regarder sa source première (qui n'est pas de mon fait), ici :

require 'sqlite'

db = SQLite::Database.new ( "../sample4.db", 0 )
rs = db.execute ( "SELECT id FROM sample4;" )

na = []

def rebuild ( arr )
    arr2 = []
    arr.each { |row|
        if ( !row.nil? )
            arr2.push ( row )
        end
    }
    return arr2
end

def setValue ( arr, arr2 )
    if ( arr.size > 0 )
        r = rand ( arr.size )
        arr2.push ( arr[ r ] )
        arr[ r ] = nil
        arr = rebuild ( arr )
        return setValue ( arr, arr2 )
    end
    return arr2
end

na = setValue ( rs, na )

na.each { |id|
    db.execute ( "SELECT title, url FROM sample4 WHERE id=#{id['id']};" ) { |lien|
        puts "<a href=\"#{lien['url']}\">#{lien['title']}</a>"
        if ( id != na.last )
            puts "<span class=\"separator\"> | </span>\n"
        end
    }
}

Et la version actuelle (que j'ai écrite) :

require 'sqlite'

db = SQLite::Database.new( "../sample4.db", 0 )
rs = db.execute( "select title, url from sample4;" )
ar = [ -1, 1 ]
res = rs.sort { |x,y|
    ar[ rand( 2 ) ]
}

res.each { |record|
    puts( "<a href=\"#{record[ 'url' ]}\">#{record[ 'title' ]}</a>" )
    puts( "<span class=\"separator\"> | </span>" ) if( record != res.last )
}

Comme vous pouvez le constater, le SGBD utilisé est sqlite.
Oui, les ruby-istes n'ont pas attendu php5 pour découvrir sqlite.

puts("Stay tuned !")

Comments