I ty możesz mieć swoją konsolę

Nie, nie będzie o grach. Będzie o tym jak mnie kolejny raz urzekł swoimi możliwościami Ruby. Zaczęło się prawie dwa lata temu, gdy spróbowałem pierwszy raz napisać coś w Ruby On Rails. Jedną z rzeczy która mnie urzekła w tym frameworku jest idea konsoli.

Ruby jako język interpretowany posiada IRB – narzędzie do interaktywnego testowania, pisania czy po prostu zabawy z kodem (Interactive RuBy). Railsowa konsola to takie IRB ale podpięte do aplikacji Rails, czyli pod ręką mamy wszystkie obiekty dostępne normalnie w aplikacji. Można wyszukać jakieś obiekty w bazie danych, poprawić je, nagrać.

Ale Ruby to nie tylko Rails. Piszę aplikację wykorzystującą interfejs graficzny (Ruby/Tk). Ze względu na to, że elementy interfejsu nie są typowymi przyciskami czy opisami, musiałem stworzyć całe bogactwo specjalizowanych widgetów. Bogactwo bogactwem, ale gdy trzeba szukać błędów w aplikacjach sterowanych przez zdarzenia (event-driven) często się wszystko komplikuje. W takim wypadku narzędzie, które na tacy nam podaje dostęp do całej aplikacji wraz z wszystkimi wewnętrznymi strukturami jest wprost nieocenione. Podobne uczucie musi towarzyszyć komuś kto opanował taką konsolę:

Troszkę inna konsola
Zdjęcie z SXC

I tutaj kłania się nam IRB. Wystarczy parę linii kodu:

irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'

libs =  " -r irb/completion"
libs << " -r config/setup"
exec "#{irb} #{libs} --simple-prompt"

Przy założeniu że ten plik jest w głównym katalogu aplikacji, a w pliku config/setup ładuje się cała aplikacja (wszystkie require, itp), po uruchomieniu go mamy konsolę dla własnej aplikacji. Cóż, żałuję, że w kod Railsowej konsoli nie zajrzałem wcześniej. Pięć linii kodu a ułatwienie gigantyczne!

Popularity: 7% [?]

Spodobało się? Podziel się z innymi: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Gwar
  • Ma.gnolia
  • Wykop
This entry was posted in jaktosierobi, ruby. Bookmark the permalink.

2 Responses to I ty możesz mieć swoją konsolę

  1. Daniel says:

    A dodajac jeszcze:
    require ‘rubygems’
    require ‘wirble’

    # start wirble (with color)
    Wirble.init
    Wirble.colorize

    Uzyskujesz kolorowanie wyników na konsoli :)

    http://pablotron.org/software/wirble/

  2. NetManiac says:

    @daniel

    No rubygems to ja z defaulta w swojej aplikacji zasysam więc ;)

    A to wirble… he he dawne czasy MUDów i ANSI graficzek/kolorów się przypominają :)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>