Archive for czerwiec, 2006

Pierwsze spotkanie polskiej grupy użytkowników Ruby On Rails

czwartek, czerwiec 29th, 2006 by Paweł Rutkowski

14 lipca 2006 roku w sali konferencyjnej firmy Sec-Bos (i dzięki jej uprzejmości zarazem) przy ulicy Łowickiej 39A w Warszawie o godzinie 1800 odbędzie się pierwsze spotkanie polskich użytkowników Ruby On Rails. Zapraszamy wszystkich zainteresowanych - zaawansowany, początkujących oraz osoby chcące dowiedzieć się co nieco o tym frameworku.

W programie przewidujemy:

  • Paweł Rutkowski - “RubyOnRails i problemy z hostingiem aplikacji”
  • Tomasz Meka - “Prototype i script.aculo.us”
  • Dyskusja na temat projektu stworzenia funkcjonalnego forum w RubyOnRails

Powstaje grupa pl.comp.lang.ruby

piątek, czerwiec 23rd, 2006 by Paweł Rutkowski

Po wielu wysiłkach, oczekiwaniach i głosowaniach ogłoszono powstanie grupy pl.comp.lang.ruby. Dokładne informacje można przeczytać tutaj.

Grupa zostanie założona za kilka dni. Jednak - jak to miało miejsce w przypadku innych grup (np.: pl.comp.sieci) może się okazać że nie będzie dostępna na niektórych serwerach (głównie dotyczy to news.gazeta.pl i niusy.onet.pl).

RubyOnRails i problemy z dziedziczeniem.

środa, czerwiec 21st, 2006 by Paweł Rutkowski

Bawiąc się ostatnio z RubyOnRails podczas pisania pewnego projektu trafiłem na bardzo dziwną przypadłość.

RubyOnRails jest wyposażony w mechanizm o nazwie ActiveRecord który jest odpowiedzialny za mapowanie obiektów użytkownika do bazy danych, ich wyszukiwanie, kasowanie, tworzenie i modyfikowanie.

Wśród wielu właściwości ActiveRecord umożliwia dziedziczenie obiektów z bazy danych. Przykładowo mamy obiekt Klient na bazie którego są zbudowane dwa inne obiekty: KlientKorporacyjny oraz KlientIndywidualny. Ponieważ większość baz danych nie jest w stanie obsłużyć czegoś takiego wprost, ActiveRecord musi wykonać troche “magii” żeby to zadziałało. Używa do specjalnej kolumny (domyślnie “type”) w której przechowuje nazwe klasy do której należy obiekt.

Dodatkową funkcjonalnością udostępnioną przez powyższy mechanizm, jest automatyczne dopisywanie:


where type='KlientKorporacyjny'

do SQL generowanego przez funkcję find. Oczywiście w momencie utworzenia nowego rekordu, jego typ także zostanie odpowiednio ustawiony.

Skuszony takimi oto urokami skorzystałem z takiego mechanizmu. Stworzyłem sobie następujące klasy:


class Category < ActiveRecord::Base
validates_uniqueness_of :name, :scope => :type
end
class ContentCategory < Category end
class WorkshopCategory < Category end

No i niestety przy próbie dodania czy zmodyfikowania rekordu pojawił się Exception. Po chwili grzebania doszedłem do tego że winny jest scope => :type. Nie wiem czym to jest spowodowane, ale type nie może być brany pod uwagę jako scope. Rozwiązaniem (mało eleganckim) okazało się dodanie nowej kolumny do Category o nazwie scope_helper i ustawianiu jej nazwy przez before_save.

Generalnie pomogło, natomiast pojawił się nowy problem. Chciałem dodać możliwość zmiany rodzaju kategorii z Workshop na Content i odwrotnie. Niestety przy tej konfiguracji poległem. Nie udało mi się w żaden sposób zmusić ActiveRecord do wykonania tej operacji. Po kilku godzinach walki dałem sobie spokój. Wyrzuciłem WorkshopCategory i ContentCategory, zastąpiłem je samym Category do którego dodałem kolumnę mytype które ustawiam ręcznie.

RubyOnRails ma wiele zalet i wygodnych rozwiązań - niestety czasem, kiedy chce się je wykorzystać trafia się na ograniczenia które mogą skutecznie zabrać pare godzin z harmonogramu.

Ciekaw jestem czy ktoś z Was także “wpadł” w jakąś pułapkę railsową ?

Czy warto używać AJAXa ?

środa, czerwiec 14th, 2006 by Paweł Rutkowski

Technologia AJAX staje się coraz bardziej popularna. Pozwala ona na interakcję przeglądarki użytkownika ze stroną bez potrzeb przeładowywania całej strony. Przykładowo: mamy listę zadań do wykonania. Klikamy przy jednej z pozycji w przycisk “do góry” i nagle pozycje zamieniają się miejscami pomimo tego że nie została przeładowana strona.

O ile sam nie jestem zwolennikiem tej technologi to jednak w wielu przypadkach pozwala ona na tworzenie bardziej intuicyjnych, ergonomicznych (nie koniecznie bardziej “użytecznych”) interface’ów użytkownika. Na przykład popularny Gmail bardzo intensywnie wykorzystuje tą technologię. Dzięki niej użytkownik ma wrażenie że strona działa bardzo szybko, ponieważ nie zawsze jest przeładowywana cała tylko fragment który uległ aktualizacji (np.: lista kontaktów).

Jeżeli chodzi o prace z AJAXem wszyscy polecają framework Prototype. Na bazie tego frameworku stworzony został także zestaw skryptów Ajaxian

Grupa dyskusyjna pl.comp.lang.ruby - CFV

niedziela, czerwiec 4th, 2006 by Paweł Rutkowski

Rozpoczeło się głosowanie za utworzeniem grupy dyskusyjnej pl.comp.lang.ruby . Oprócz samego Ruby, grupa dopuszcza tematykę RubyOnRails. Osoby które chcą zagłosować za ( nie biore pod uwagę że ktoś zagłosuje przeciw:) znajdą dokładną instrukcję tutuaj

Mam nadzieję że grupa powstanie - uważam że czytanie postów w ulubionym czytniku jest o wiele wygodniejsze niż na jakimkolwiek forum.