Posted by Dawid on mar 2, 2009 in
Komentarz,
Programowanie,
Ruby,
Ruby On Rails
Kilka miesięcy temu (gdzieś koło roku nawet, więc wypadałoby napisać – kilkanaście…) zetknąłem się z językiem Ruby, i oczywiście z frameworkiem Ruby On Rails. Jako że jestem programuję głównie dla sieci, ale też nie bezmyślnie, od dawna dostrzegam pewnie nazwijmy to niedostatki języka PHP. Dlatego właśnie wyczytałem w sieci wszystko, co się da na temat tej wówczas dla mnie nowości, mocno się zainteresowałem, przyrzekłem sobie, że będę się tego „czegoś” uczyć w wolnych chwilach, aby nie tylko podnieść własne kwalifikacje, ale po prostu – aby poznać nowe trendy, jak to się ładnie nazywa…
Niestety, smutna rzeczywistość zgotowała dla mnie coś zupełnie innego, bowiem w ciągu ostatnich kilku miesięcy tak byłem zawalony robotą, że początkowe „mocne postanowienia” musiałem, chcąc-niechcąc, odłożyć w kąt i skupić się na dotychczasowym klepaniu kodu.
Teraz, po lekturze http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html zastanawiam się, czy właściwie nie zrobiłem dobrze? Czy Railsy nadal, mimo że upłynęło przecież kilka miesięcy, są w powijakach? Myślę, że tak, mimo wszystko nadal jest to technologia bardzo niszowa, z której przyswojeniem można jeszcze spokojnie poczekać.
Póki co, w naszym zresztą mocno zacofanym kraju wciąż niepodzielnie rządzi „cowboy-codding” w postaci zgraj licealistów, którzy za pół darmo piszą serwisy i-netowe (czy zresztą mocno wkurzają „prawdziwych” programistów; można o tym przeczytać na niemal każdym forum poświęconym językowi PHP).
Czy to źle, że Railsy tak kiepsko sobie radzą? Z mojej perspektywy – wcale nie. Mogę chociażby dzisiaj zasiąść do zgłębiania tego frameworka, i powiedzmy za miesiąc mieć go jako-tako opanowanego, a i tak pewnie byłbym jednym z pierwszych kilkudziesięciu zapaleńców, którym w ogóle chciało się to robić.
Z drugiej jednak strony, czy warto? Powiem szczerze: mocno mnie ten język pociąga, jego konstrukcja jest wręcz bajeczna, ale… no właśnie, zapytam po raz kolejny: czy warto uczyć się Ruby, Ruby On Rails???
Tagi: Ruby, Ruby On Rails
Posted by Dawid on lis 16, 2008 in
Programowanie,
Ruby,
Ruby On Rails
Skoro instalację języka Ruby i frameworka Rails mamy już za sobą, warto byłoby poświęcić trochę czasu na bliższe zapoznanie się zarówno z samym językiem, jak i podstawami frameworka.
Zaznaczam, że w tym miejscu podaję podstawy tego języka, które w żadnym razie nie wyczerpują tematu, a czasami są tylko szczytem góry lodowej. Jeśli Twoja ciekawość, Drogi Czytelniku, w którymś momencie jest niezaspokojona, pod koniec tego wpisu podaję kilka przydatnych linków, pod którymi znaleźć powinieneś odpowiedzi na interesujące Cię pytania. Zapraszam oczywiście również do komentowania wpisu – wszelkie uczestnictwo jest jak najbardziej mile widziane!
No, ale zacznijmy już w końcu, prawda?
Nieco historii…
Jak każdy tutorial, czy opis technologii, tak i tutaj zacznę od pewnego rysu historycznego, który pozwoli Ci nieco przychylniej spojrzeć na język Ruby i Railsy.
Zacznijmy od samego języka Ruby. Jest to stosunkowo młody język, bo jego historia zaczęła się w roku 1995, kiedy to Yukihiro Matsumoto (pseudonim Matz) stworzył interpretowany, w pełni obiektowy i dynamicznie typowany język programowania, który nazwał Ruby (z angielskiego – rubin).
Aby zdobyć sobie popularność, trzeba było tylko 8. lat – wtedy to, w 2008 roku, na rynku pojawił się framework Ruby on Rails. Od tego czasu (darujmy sobie szczegóły historii i ewolucji Ruby’iego i Railsów) masowo zdobywa sobie popularność.
Co jest przyczyną aż takiej „kariery” Railsów (umówmy się: kiedy używam słowa Rails, to w kontekście połączenia Ruby’iego i frameworka Rails; kiedy natomiast wskazuję wyraźnie „ruby” – piszę o samym języku programowania)? Praktycy podawać tutaj będą dużo przyczyn, ale najczęściej wymienianymi są: prostota, szybkość pisania kodu (trudno właściwie mówić tutaj o pisaniu… ale nie uprzedzajmy wydarzeń), intuicyjność… Te zachwyty można by mnożyć, jednak wróćmy do głównego wywodu.
Co jeszcze nas w tym miejscu powinno interesować? Acha, licencjonowanie. Oczywiście Ruby i framework są otwartym oprogramowaniem, licencjonowanym na zasadach GPL. Czyli – w zasadzie dowolność.
Teraz przejdźmy dalej, do rzeczy bardziej interesujących…
Podstawowe typy danych
Ruby wspiera wszystkie typy danych znane programistom. Są to więc stringi, integery, floaty, itd. Nieco inaczej się nazywają, ale – jak napisano wyżej – jest to jeden z języków typowanych dynamicznie, w związku z czym nie musimy jawnie deklarować używanego typu danych, jak to ma miejsce chociażby w języku C. Tutaj wystarczy napisać:
puts 1+2
w odpowiednim miejscu, żeby „na wyjściu” otrzymać wynik z dodawania 1 + 2.
Ach, ale jeszcze nie wspomnieliśmy o najpopularniejszych sposobach pracy z Rubym!
Już nadrabiam…
Jeśli tak się nieszczęśliwie składa, że naszym środowiskiem roboczym jest jedynie słuszny Windows, nie rozpaczajmy! Mamy tutaj do dyspozycji „okienkowego” (a jakże…) fxri. Wyglądem przypomina komunikator w rodzaju GG, w swojej przed-betowej wersji. Ta całkiem niepozornie wyglądająca aplikacyjka może być całkiem przydatnym narzędziem, szczególnie teraz, kiedy stawiamy dopiero pierwsze kroki… Zwróćmy chociażby uwagę na lewą, dość długą listę klas i metod. Wystarczy jedno kliknięcie, by dowiedzieć się składni wybranej klasy, czy metody. Taki podręczny help na pewno nam nie zaszkodzi. Ale wróćmy teraz do głównego wywodu.
Wpiszmy więc do naszego fxri puts 1+2. Po zatwierdzeniu Enterem otrzymamy poniżej coś takiego:
3
=> nil
Trójka – to oczywiście wynik naszego dodawania, bo właśnie takie polecenie wydaliśmy (1+2). Komenda puts była zwykłym poleceniem wyświetlenia ciągu tekstowego na domyślnym wyjściu. A ponieważ jako ciąg tekstowy wpisaliśmy 1+2, interpreter policzył wynik tego dodawania i po prostu nam go wypisał.
Zmodyfikujmy teraz nieco nasze polecenie; napiszmy
puts "1+2"
No, tym razem rzeczywiście zażyczyliśmy sobie na wyjściu stringa składającego się z trzech znaków! (1, 2, oraz znaku +). Na wyjściu otrzymaliśmy
1+2
=> nil
Aby zachować w tym miejscu pewną dokładność, przyznać należy, że polecenie puts dokłada na końcu ciągu znak nowej linii, dlatego też => nil pojawia się niżej.
Z kolei => nil oznacza zakończenie działania naszego „programu” (mówiąc w wielkim skrócie, ale o tym kiedy indziej…).
Aby karetka nie przechodziła nam do kolejnej linii, wystarczy nieco zmodyfikować nasz program:
print „1+2″
Teraz na wyjściu otrzymamy
1+2
=> nil
W ten właśnie sposób doszliśmy do miejsca, w którym zaczyna się każdy podręcznik programowania, jaki tylko wzięlibyśmy do ręki: czas na napisanie „Hello world!„.
Jeśli nie jesteś na tyle bystry, by zrobić to samemu, masz dwa wyjścia: przewinąć nieco stronę i raz jeszcze przeczytać ten wpis, albo skorzystać z „gotowca”, który wygląda następująco:
puts „Hello world”
Prostsze, niż budowa cepa, prawda?
Wejście-wyjście
Poznaliśmy już dwie metody wyprowadzenia ciągu znaków na standardowe wyjście, jakim jest ekran konsoli. Są to:
puts – wyprowadzenie ciągu znaków na ekran i dodanie na koniec „ukrytego” znaku nowej linii, oraz
print – jak wyżej, tylko bez dodawania nowej linii.
Jest jeszcze printf, który działa identycznie, jak analogiczna funkcja znana z języka C (więcej informacji znajdziecie tutaj).
Czas bliżej poznać polecenie open – najprostsze z serii poleceń operujących na plikach.
Przeanalizujmy prosty przykład:
plik = open "C:\\dowolny_plik.txt"
puts plik.gets
a teraz porównajmy go z nieco dłuższym zapisem:
open "C:\\dowolny_plik.txt" do |plik|
puts plik.gets
end
Skutek działania tych dwóch zapisów jest w zasadzie ten sam: oba otwierają dowolny_plik.txt, pobierają z niego pierwszą linię, po czym wypisują ją (stosując znane nam już puts) na ekranie.
Odczytu danych z dowolnego w zasadzie pliku możemy dokonać na dwa sposoby: klasycznie, lub w sposób blokowy. Zarknijmy na dwa przykłady:
plik = File.open "C:\\dowolny_plik.txt"
while ln = plik.gets do puts ln end
plik.close
i drugi:
File.open "C:\\dowolny_plik.txt" do |plik|
while ln = plik.gets do puts ln end
end
Przewaga tego drugiego sposobu widoczna jest wtedy, kiedy przyjdzie nam śledzić wyjątki. W pierwszym przykładzie, jeśli wystąpi błąd proces może pominąć zamknięcie pliku, czego oczywiście byśmy nie chcieli. W drugim przykładzie plik zostanie zawsze zamknięty, nawet w przypadku wystąpienia błędu. Dlatego oczywiście zalecany jest ten drugi, jak można się domyślić…
Na tym zakończymy „podstawy podstaw” Ruby’ego. W następnym odcinku zajmiemy się sterowaniem programem.
Tagi: Ruby, Ruby On Rails
Posted by Dawid on lis 3, 2008 in
Programowanie,
Ruby On Rails
Zacznijmy w takim razie od tego samego, od czego zaczynają się zazwyczaj podobnego rodzaju tutoriale – od instalacji Ruby oraz Ruby on Rails. Aby nie popełnić w tym miejscu zbyt dużo błędów, wsparłem się lekturą kilku innych tutoriali, jakie znalazłem w sieci, oraz – żeby to wszystko zweryfikować – własnym doświadczeniem.
Źródła
Odnalezienie w sieci pakietów instalacyjnych na różne platformy nie jest trudne. Wystarczą odwiedziny na stronie http://www.rubyonrails.pl – tam znajdziemy link do pobrania odpowiednich instalatorów dla Windowsa, Linuksa, i oczywiście na Maca.
Ruby
Lepiej poinformowani ode mnie twierdzą, że wersją języka Ruby, którą zaleca się do pracy z Ruby On Rails jest wersja 1.8.6. Jeśli chodzi o wcześniejsze wydania, to również dobrze możemy używać wersji 1.8.5, czy 1.8.4, ale już wersji 1.8.3 nie.
Dla platformy Windows mamy oczywiście instalator (dostępny tutaj), a wraz z nim Ruby’ego, najpopularniejsze rozszerzenia, oraz edytor.
RubyGems
Kiedy uda nam się szczęśliwie zainstalować Ruby’ego, w następnej kolejności powinniśmy zainteresować się RubyGems. Użytkownicy linuksa będą bardziej zorientowani w temacie, kiedy powiem, że RubyGems są standardowym managerem pakietów Ruby. Działają na podobnej zasadzie, jak apt-get, czy emerge. Za pomocą kilku zaledwie poleceń wydanych w konsoli możemy z Internetu dociągnąć odpowiedni pakiet i go zainstalować.
Rails
Kiedy mamy już zainstalowane RubyGems, problem zainstalowania frameworku Rails jest już bajecznie wręcz prosty do rozwiązania. Aby zainstalować to środowisko wraz ze wszystkimi zależnymi pakietami, wystarczy z konsoli wydać polecenie:
gem install rails
Zobaczymy wtedy zarówno postęp w ściąganiu najbardziej aktualnej wersji poszczególnych pakietów, jak i postęp samej instalacji. Za pomocą tego samego polecenia możemy później doinstalowywać kolejne pakiety, usuwać te, które są zbędne, czy w jakikolwiek sposób manipulować ustawieniami naszego środowiska. Co ważne, w przypadku wyjścia na świat aktualizacji, za pomocą tego samego polecenia możemy również zaktualizować nasze Railsy!
Sprawdzamy środowisko
Aby sprawdzić, czy wszystko zostało zainstalowane poprawnie, to znaczy – czy nasze wcześniejsze działania przyniosły pożądany skutek, proponuję przejść do konsoli, przejść do katalogu, w którym umieścimy naszą przykładową aplikację, i wpisać kolejno:
rails przyklad
cd przyklad
ruby script/server
Pierwsze polecenie (rails przyklad) utworzy nam cały szkielet aplikacji, wszystkie katalogi, podstawowe pliki – zrobi za nas dosłownie wszystko, nie karząc nam tworzyć własnego zestawu katalogów, w których umieścilibyśmy (np. w PHP) pliki konfiguracyjne, te odpowiedzialne za widok, kontrolery, czy modele… Tutaj wystarczyło jedno polecenie! Przyjemne, prawda?
Kolejne polecenie (cd przyklad) nie wymaga chyba wytłumaczenia. Za jego pomocą wchodzimy po prostu do świeżo utworzonego katalogu. I tyle.
Ostatnie z serii (ruby script/server) służy do uruchomienia domyślnego serwera Ruby’ego.
Po szczęśliwym wykonaniu powyższych kroków, powinniśmy uruchomić naszą ulubioną przeglądarkę internetową, i odwiedzić adres http://localhost:3000. Jeśli wszystko działa, Twoim oczom powinna się ukazać strona przykładowej aplikacji Ruby on Rails.
Gotowce
W sieci istnieje oczywiście kilka lepszych lub gorszych w pełni wyposażonych środowisk, gotowych do natychmiastowego zainstalowania i użycia.
Dla Mac OS X istnieje Locomotive, natomiast dla Windowsów – Instant Rails.
Jeśli jednak chcielibyście znać moje zdanie, to chyba nie ma to jak samemu stworzyć swoje własne środowisko. To tak, jak instalować na komputerze Krasnala, kiedy lepiej nieco pomęczyć się z osobnym instalowaniem Apache, PHP i MySQL’a. Nie wiem, jak Wam, ale ja wolę trochę poczytać dokumentacji, trochę samemu pokombinować. Później, w przypadku wystąpienia błędów, zawsze łatwiej mi znaleźć je w takim własnoręcznie zainstalowanym i skonfigurowanym środowisku, niż w kombajnie, który instalowałem za pomocą jednego kliknięcia.
Ale oczywiście to jest nasz indywidualny wybór.
Następny odcinek – już wkrótce!
Przeczytacie w nim o:
- podstawy języka Ruby
- typy danych
- sposób pisania kodu
- sposób uruchamiania kodu
- kilka przydatnych tricków, które mogą nam wydatnie pomóc w pracy z kodem
Zapraszam!
Tagi: Ruby, Ruby On Rails