piątek, 12 lutego 2010

JRuby on Rails + NetBeans + GlassFish +… Microsoft SQL Server 2008 (cz.1)

Część pierwsza tutoriala o “mieszance wybuchowej”. Znalazłem wreszcie czas, żeby się za nią zabrać – temat jest interesujący i odrobinę intrygujący. Wszyscy, którzy próbują swych sił ze znakomitym frameworkiem Ruby on Rails zwykle korzystają z układu: Ruby + Rails, MySQL oraz serwer Webrick lub Mongrel. Ja mam propozycję inną.
Na jednym ze spotkań Śląskiej Regionalnej Grupy Microsoft mój kolega Sebastian, podczas przerwy kawowej, słuchając moich wywodów na temat doskonałości Rails zaproponował mi zwrócenie uwagi na rozwiązanie o przewrotnej nazwie JRuby on Rails. Literka “J” przed nazwą jednego z coraz bardziej popularnych, interpretowanych języków programowania oznacza, że wersja ta została w całości napisana w Javie (moim ulubionym języku programowania :-)). No więc się zainteresowałem. Dlaczego? Mam nadzieję, że ten tutorial udzieli odpowiedzi na to pytanie i przy okazji wiele wyjaśni.
O czym będzie w tej części?
  1. Wstępniak drugi, czyli co mnie skłoniło ku takiemu rozwiązaniu.
  2. Krótko o użytych narzędziach.
  3. Przygotowanie środowiska pracy.
Jednakowoż muszę zaznaczyć, że nie będę tutaj wyjaśniał szczegółowo, co to jest JRuby on Rails, jak działa i do czego służy, ponieważ zakładam, że te informacje każdy czytający znalazł już czy to w Internecie, czy w literaturze (polecam).
No to start!
001 Co mnie skłoniło ku tak dziwnemu rozwiązaniu?
Przejście na JRuby on Rails spowodowane było poszukiwaniem przeze mnie serwera produkcyjnego, na którym można by śmiało i bezpiecznie uruchamiać aplikacje railsowskie przeznaczone do wykorzystania przez użytkowników końcowych. Serwerki wbudowane w Rails (Webrick lub Mongrel – po doinstalowaniu odpowiedniego GEMa) nadają się raczej do celów testowych lub uruchamiania pojedynczych aplikacji w sieci lokalnej. Ja chciałem czegoś więcej, a tym czymś jest GlassFish v3 – doskonały serwer aplikacyjny rozwijany przez społeczność na zasadach Open Source, zgodny z J2EE 6 itd., w pełni zarządzany, skalowalny, stabilny, wydajny i co tam jeszcze ;-) Ale na poważnie – GlassFish jest faktycznie serwerem przeznaczonym do tworzenia środowisk produkcyjnych, stanowiący platformę dla aplikacji sieciowych Java. Ponieważ JRuby jest aplikacją javowską i ponieważ GlassFish w wersji 3 obsługuje ruby’ego w sposób bezpośredni (nie jak to było kiedyś – poprzez doinstalowanie pakietu JRuby i Rails), ponadto zaś nie trzeba aplikacji railsowskiej pakować warblerem w celu uzyskania pakietu *.war (do zainstalowania na serwerze niczym aplikacja rdzennie-javowska), wybór był oczywisty.
Kolejna rzecz, to serwer baz danych. Ponieważ pracuję w systemach Windows częściej niż pod Linuksami i dysponuję jednym z najpotężniejszych serwerów bazodanowych – SQL Server 2008 firmy Microsoft (mam Developer Edition, więc lepiej być nie może), postanowiłem zaprząc tenże właśnie serwer do pracy na mojej platformie uruchomieniowej. Inna rzecz, że chciałem sprawdzić, jak framework Rails poradzi sobie z tym dość nietypowym dla niego serwerem (zwykle używamy MySQL – bo jest taniej ;-)). Oczywiście wykorzystując w pełni “objavienie” mojego środowiska uruchomieniowego, postanowiłem wykorzystać do łączenia się z SQL Serverem technologię JDBC. W zasadzie SQL Server jest jedynym elementem tej układanki uzależniającym cały projekt od systemu Windows (u mnie XP). Gdyby wykorzystać standardowego MySQL czy PostgreSQL, to śmiało możemy wszystko przerzucić na Linuksy.
002 Krótko o użytych narzędziach
Żeby pobawić się tym tutorialem, będziecie musieli zaopatrzyć się w następujące narzędzia:
  1. darmowe, otwarte środowisko programistyczne NetBeans – najlepiej wersję kompletną, chyba, że nie zamierzacie testować jego pełnych możliwości, wtedy można pobrać wersję dla RoR;
  2. Microsoft SQL Server 2008 – nam wystarczy właściwie darmowa wersja Express Edition (ważne, żeby zainstalować też Microsoft SQL Server Management Studio – można pobrać razem z wersją Express, a jest to przydatne narzędzie), ale jeżeli dysponujecie pełną wersją komercyjną, tym lepiej; pamiętajcie: nie toleruję piractwa – nie kradnijcie wersji komercyjnej, jeśli i tak darmowa wystarczy!!!
I to wszystko na początek. Potem będziemy pobierać serwer GlassFish oraz osobną instalację JRuby z dodatkami. Środowisko NetBeans w wersji dostosowanej do tworzenia aplikacji Rails lub w wersji pełnej dostarcza (prawie) wszystkich narzędzi, których będziemy potrzebowali. W przypadku SQL Servera musimy jedynie pobrać i skonfigurować sterownik JDBC ze strony firmy Microsoft.
Spróbujmy więc przygotować nasze środowisko pracy.
003 Przygotowanie środowiska pracy
Po pierwsze musimy pobrać i zainstalować SQL Server i NetBeans. Nie będę opisywał tutaj procesu instalacji, ponieważ wszystko zostało opisane w innych miejscach (przejrzyjcie linki w tekście). Zresztą, jeśli ktoś bierze się za programowanie, nie powinien mieć problemów z instalacją (chyba)…
Na początek uruchomimy środowisko NetBeans. Po względnie krótkiej chwili powinniśmy zobaczyć okno główne środowiska jak na rysunku poniżej (na zrzucie widać kilka testowych projektów :-)).
Następnie musimy sprawdzić, czy na pewno mamy do dyspozycji w naszym środowisku oprogramowanie JRuby (wbudowane). W tym celu wybieramy z Menu Narzędzia >> Ruby Platforms i sprawdzamy, co jest wyświetlone w okienku. Zwykle mamy do dyspozycji w pełni zainstalowane podstawowe środowisko JRuby wraz z Rails i innymi dodatkami. Oto okienko pokazujące informacje o zainstalowanych wersjach JRuby:
Jak widać, w przypadku mojego komputera oprócz wbudowanej wersji JRuby jest też wersja dodatkowa, ale o niej póki co nie mówimy.
Sprawdźmy teraz, jakie dodatki są zainstalowane w ramach naszej wbudowanej wersji JRuby. Mam nadzieję, że nie zamknęliście okienka, o którym przed chwilą pisałem. Znajduje się w nim bowiem przycisk, za pomocą którego uruchomimy menedżera pakietów GEM. Kliknijmy więc przycisk Gem manager i przyjrzymy się nowemu okienku:
Na zakładce Installed widzimy wszystkie pakiety GEM zainstalowane w naszej wersji JRuby. Zakładka Updated zawiera pakiety zaktualizowane (możemy zaktualizować wybrane pakiety do najnowszej wersji), a zakładka New Gems zawiera propozycje pakietów, które możemy sobie zainstalować, jeśli tylko będziemy mieli ochotę. W zrzucie ekranowym okienka Ruby Gems widzicie wszystkie pakiety, jakie mam zainstalowane w swoim środowisku roboczym, jednak aby przetestować rozwiązania proponowane w tym tutorialu wystarczy mieć zainstalowane pakiety wchodzące w skład zestawu domyślnego. Jeśli w tym zestawie nie ma pakietu activerecord-jdbc-adapter, to musimy go dodać sami (zakładka New Gems). Dopiero w dalszej części tutoriala dowiemy się, jak skonfigurować własną instancję JRuby z frameworkiem Rails.
Ważna uwaga: koniecznie musimy pamiętać, aby zainstalować pakiet GEM glassfish, ponieważ nie jest on dostarczany domyślnie. Jeśli zainstalujemy ten pakiet (zakładka New Gems) w wersji np. 1.0.2, to nie możemy “dźwigać” pakietu rack do nowszej wersji (musi zostać 1.0.1), ponieważ wszystko weźmie w łeb. Wyszperałem swego czasu ten problem i został on opublikowany w bugtracku projektu Glassfish GEM.
I to tyle, jeśli chodzi o część pierwszą. Ciąg dalszy już wkrótce, a w nim: przygotowanie baz danych i konta użytkownika SQL Servera, instalacja sterownika JDBC, utworzenie i uruchomienie pierwszej, szkieletowej aplikacji JRuby on Rails… No i testy! Zapraszam!