Samouczek Ruby on Rails

Co to jest Rubin?

Rubin jest wysokopoziomowym, interpretowanym i obiektowym jฤ™zykiem programowania. Jest dynamicznym jฤ™zykiem open-source, ktรณry ma za sobฤ… ล›wietnฤ… spoล‚ecznoล›ฤ‡. Ruby zostaล‚ zaprojektowany dla prostoty i produktywnoล›ci. Zachฤ™ca do pisania kodu oprogramowania najpierw przez czล‚owieka, a dopiero potem przez komputer. Zostaล‚ stworzony przez Yukihiro Matsumoto w Japonii w 1995 roku.

Co to jest Railsy?

Rails jest frameworkiem programistycznym napisanym w Ruby do tworzenia aplikacji internetowych. Zostaล‚ stworzony jako podstawa aplikacji Basecamp, a nastฤ™pnie wydany jako oprogramowanie typu open source w 2004 roku. Rails oferuje wiele wbudowanych standardowych funkcji i funkcjonalnoล›ci, co czyni go odpowiedniฤ… opcjฤ… do prototypowania i rozwoju MVP.

Zostaล‚ stworzony przez Davida Heinemeiera Hassona, popularnie znanego jako DHH. Jest to jedno z najbardziej wpล‚ywowych i popularnych narzฤ™dzi do tworzenia aplikacji internetowych. Jest uลผywany przez niektรณre ulubione witryny, takie jak Airbnb, Github, Shopify itp.

Dlaczego szyny?

Oto zalety/korzyล›ci korzystania z Railsรณw:

  • Railsy sฤ… spakowane jako klejnot Ruby i moลผna ich uลผywaฤ‡ do tworzenia rรณลผnorodnych aplikacji.
  • Umoลผliwia budowanie zwykล‚ych aplikacji internetowych, aplikacji e-commerce, systemรณw zarzฤ…dzania treล›ciฤ… i nie tylko.
  • Railsy to framework z peล‚nym stosem, ktรณry zawiera wszystko, czego potrzebujesz do stworzenia aplikacji internetowej opartej na bazie danych, przy uลผyciu wzorca Model-View-Controller.
  • Oznacza to, ลผe wszystkie warstwy sฤ… zbudowane tak, aby pล‚ynnie ze sobฤ… wspรณล‚dziaล‚aล‚y i wymagaล‚y mniejszej iloล›ci kodu. Wymaga mniej linii kodu niลผ inne frameworki.

Jak pobraฤ‡ i zainstalowaฤ‡ Ruby na Windows

Proces instalacji bฤ™dzie zaleลผaล‚ od Twojego systemu operacyjnego. Przejdziesz przez instalacjฤ™ Ruby na Windows, Mac i Linux.

Krok 1) Pobierz Rubyinstaller
Najล‚atwiejszy sposรณb na zainstalowanie Ruby na twoim Windows komputerze jest uruchamiany za pomocฤ… instalatora Ruby, ktรณry moลผna pobraฤ‡ pod adresem https://rubyinstaller.org/.

Wszystko, co musisz zrobiฤ‡, to uruchomiฤ‡ pobrany instalator.

Krok 2) Kliknij pobrany instalator
Double-kliknij pobrany instalator โ€žrubyinstaller-2.4.1-2-x64.exeโ€.

Krok 3) Zaakceptuj licencjฤ™
Wybierz przycisk โ€žAkceptujฤ™ licencjฤ™โ€ i kliknij przycisk โ€žDalejโ€. To powinno doprowadziฤ‡ Ciฤ™ do nastฤ™pnego rysunku poniลผej:

Pobierz i zainstaluj Ruby na Windows

Krok 4) Zaznacz pierwsze dwa pola wyboru
Zaznacz pierwsze dwa pola wyboru, aby uล‚atwiฤ‡ uruchamianie skryptรณw Ruby.

Kliknij przycisk โ€žZainstalujโ€, aby rozpoczฤ…ฤ‡ instalacjฤ™. Po zakoล„czeniu instalacji powinieneล› zobaczyฤ‡ poniลผszy rysunek.

Pobierz i zainstaluj Ruby na Windows

Krok 5) Kliknij Zakoล„cz
Nie odznaczaj opcji checkbox, ktรณra instaluje MSYS2. Kliknij โ€žZakoล„czโ€, aby zakoล„czyฤ‡ instalacjฤ™, a zostanie wyล›wietlone okno wiersza poleceล„ pokazane na poniลผszym rysunku.

Pobierz i zainstaluj Ruby na Windows

Krok 6) Instaluje MSYS2
Ten krok instaluje MSYS2, platformฤ™ do budowania zawierajฤ…cฤ… menedลผera pakietรณw uล‚atwiajฤ…cego instalacjฤ™ pakietรณw Windows.

Naciล›nij klawisz Enter, aby zainstalowaฤ‡ wszystkie komponenty, poniewaลผ wszystkie sฤ… wymagane do pล‚ynnego ล›rodowiska programistycznego Ruby on Rails do pracy Windows.

Pobierz i zainstaluj Ruby na Windows

Instalowanie szyn

Powinieneล› mieฤ‡ zainstalowany Ruby z poprzedniej sekcji, a teraz zamierzasz zainstalowaฤ‡ Railsy. Moลผesz zainstalowaฤ‡ Railsy za pomocฤ… pakietu z Instalator szyn, ale problem polega na tym, ลผe nie otrzymujesz najnowszej wersji wymaganych pakietรณw.

Jeล›li masz juลผ zainstalowanฤ… najnowszฤ… wersjฤ™ Ruby i podstawowy zestaw wymaganych RubyGems i rozszerzeล„, wszystko, co musisz teraz zrobiฤ‡, to uruchomiฤ‡ nastฤ™pujฤ…ce polecenie w wierszu poleceล„, aby zainstalowaฤ‡ Rails w swoim systemie: 'gem install rails.'

Bฤ™dziesz takลผe musiaล‚ zainstalowaฤ‡ node.js jeล›li jeszcze go nie masz, poniewaลผ niektรณre biblioteki, od ktรณrych zaleลผy Rails, wymagajฤ… pliku Javascript runtime, aby dziaล‚aฤ‡ poprawnie. Moลผesz uzyskaฤ‡ wฤ™zeล‚ pod adresem https://nodejs.org.

Jest to bardziej powszechne i preferowane podejล›cie do rozwoju WindowsSpoล‚ecznoล›ฤ‡ Rails uลผywa Windows Podsystem dla systemu Linux zapewniajฤ…cy ล›rodowisko GNU/Linux z narzฤ™dziami wiersza poleceล„, narzฤ™dziami i popularnymi aplikacjami bezpoล›rednio dostฤ™pnymi Windows.

Instalowanie Ruby na Macu

Na Twoim Macu jest juลผ preinstalowany Ruby. Jednak wstฤ™pnie zainstalowana wersja moลผe byฤ‡ stara, dlatego konieczne bฤ™dzie zainstalowanie nowej/najnowszej wersji.

Najล‚atwiej to zrobiฤ‡ za pomocฤ… menedลผera pakietรณw, takiego jak Homebrew. Moลผe byฤ‡ konieczne najpierw zainstalowanie Homebrew, uruchamiajฤ…c poniลผsze polecenie w terminalu.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)

Spowoduje to wyล›wietlenie ostrzeลผenia i proล›by o podanie hasล‚a. Wprowadลบ hasล‚o do komputera Mac (znaki nie bฤ™dฤ… widoczne podczas wpisywania). Po prostu naciล›nij โ€žEnterโ€, gdy skoล„czysz wpisywaฤ‡ hasล‚o. Nastฤ™pnie uruchom to proste polecenie Homebrew, aby zainstalowaฤ‡ Ruby na komputerze Mac.

brew install ruby

A takลผe uruchom to polecenie:

echo "export PATH="/usr/local/bin:/usr/local/sbin:$PATH >> ~/.bash_profile

Aby ustawiฤ‡ tฤ™ instalacjฤ™ Ruby jako domyล›lnฤ… Ruby do uruchomienia w twoim systemie, a nie preinstalowanฤ… Ruby.

Aby potwierdziฤ‡, ลผe instalacja zakoล„czyล‚a siฤ™ powodzeniem, moลผesz uruchomiฤ‡ nastฤ™pujฤ…ce polecenie w terminalu

ruby --version

spowoduje to wydrukowanie numeru wersji Ruby, ktรณrฤ… zainstalowaล‚eล›. Dane wyjล›ciowe bฤ™dฤ… wyglฤ…daฤ‡ mniej wiฤ™cej tak

ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-darwin18]

Instalowanie Ruby na Ubuntu (Linux)

Najล‚atwiejszy sposรณb na zainstalowanie Ruby na twoim komputerze Ubuntu system jest poprzez menedลผera pakietรณw apt. Musisz uruchomiฤ‡ nastฤ™pujฤ…ce polecenia w terminalu, aby zainstalowaฤ‡ najnowszฤ… wersjฤ™ Ruby z Ubuntu repozytoria.

  • aktualizacja sudo apt โ€“ Spowoduje to aktualizacjฤ™ ustawieล„ domyล›lnych Ubuntu repozytoria
  • sudo apt zainstaluj Ruby-full โ€“ Pobierze i zainstaluje najnowszฤ… wersjฤ™ Ruby

Aby potwierdziฤ‡ pomyล›lnฤ… instalacjฤ™, moลผesz uruchomiฤ‡ nastฤ™pujฤ…ce polecenie โ€žrubin โ€“ wersjaโ€, spowoduje to wydrukowanie zainstalowanej wersji Ruby.

Instalowanie szyn na Ubuntu (Linux)

Powinieneล› wykonaฤ‡ poniลผsze kroki, aby pomyล›lnie zainstalowaฤ‡ Railsy na komputerze z systemem Linux.

Krok 1) Zaktualizuj menedลผera klejnotรณw komputera, uruchamiajฤ…c โ€žaktualizacja klejnotu โ€“ systemโ€ w terminalu lub w wierszu poleceล„.

Krok 2) Uruchom โ€žklejnot instalacyjny szynโ€ aby zainstalowaฤ‡ najnowszฤ… wersjฤ™ Railsรณw na swoim komputerze.

Krok 3) Powinieneล› zainstalowaฤ‡ klejnot pakietu, aby uล‚atwiฤ‡ zarzฤ…dzanie zaleลผnoล›ciami klejnotรณw aplikacji Rails. Uruchomiฤ‡ โ€žpakiet instalacji klejnotuโ€ do niego dostaฤ‡.

Dwie zasady Railsรณw

Railsy kierujฤ… siฤ™ podstawowymi zasadami projektowania oprogramowania i zachฤ™cajฤ… do korzystania z tych zasad.

Dwa najczฤ™stsze to:

  • Nie powtarzaj siฤ™ (DRY) โ€“ dziฤ™ki temu moลผesz pisaฤ‡ zwiฤ™zล‚y, spรณjny i ล‚atwy w utrzymaniu kod.
  • Konwencja zamiast konfiguracji โ€“ Railsy sฤ… wstฤ™pnie skonfigurowane tak, aby uลผywaฤ‡ rozsฤ…dnych ustawieล„ domyล›lnych, ktรณre pasujฤ… do wiฤ™kszoล›ci typowych zastosowaล„. Dziฤ™ki temu tworzenie aplikacji jest szybsze, a ponadto masz mniej kodu do utrzymania.

Railsy โ€“ Struktury plikรณw projektu

Majฤ…c teraz Rails zainstalowany w systemie, stwรณrzmy aplikacjฤ™ Rails! Nauczymy siฤ™ przykล‚adรณw Ruby on Rails i jak utworzyฤ‡ aplikacjฤ™ listy zadaล„ w tym samouczku Ruby on Rails. Uruchom nastฤ™pujฤ…ce polecenie โ€žszyny nowej aplikacji todo_appโ€ w terminalu, aby utworzyฤ‡ aplikacjฤ™.

To polecenie tworzy katalog o nazwie โ€žaplikacja do zrobieniaโ€ w bieลผฤ…cym katalogu z podstawowฤ… strukturฤ… folderรณw aplikacji internetowej Rails, jak pokazano na poniลผszym rysunku:

Railsy โ€“ Struktury plikรณw projektu

W tym przykล‚adzie Ruby on Rails przejdziesz przez gล‚รณwne katalogi.

Aplikacja โ€“ Ten katalog grupuje rรณลผne podkatalogi dla interfejsu uลผytkownika/ukล‚adu (widoki i pomocniki), kontrolera (pliki kontrolerรณw) i modeli (logika biznesowa/aplikacja).

aplikacja/kontrolery โ€“ Ten katalog przechowuje pliki kontrolera uลผywane przez Railsy do obsล‚ugi ลผฤ…daล„ od klienta.

aplikacja/zasoby โ€“ Zawiera pliki statyczne, co jest koniecznoล›ciฤ…, aby front-end aplikacji byล‚ pogrupowany w foldery w zaleลผnoล›ci od ich typu โ€“ JAVASCRIPT plikรณw, obrazรณw i arkuszy stylรณw.

aplikacja/pomocnicy โ€“ Ten podkatalog zawiera funkcje pomocnicze, ktรณre sprawiajฤ…, ลผe model aplikacji, widok i logika kontrolera sฤ… skoncentrowane, maล‚e i przejrzyste.

aplikacja/modele โ€“ Zawiera pliki

ktรณre modelujฤ… bazฤ™ danych aplikacji. Klasy modelu bardzo uล‚atwiajฤ… pracฤ™ z bazฤ… danych.

aplikacja/widoki โ€“ Przechowuje pliki szablonรณw/ukล‚adรณw, z ktรณrymi uลผytkownik aplikacji wchodzi w interakcjฤ™. Szablony sฤ… poล‚ฤ…czeniem HTML i danych z bazy danych.

kosz โ€“ Zawiera skrypty Rails, ktรณre uruchamiajฤ… Twojฤ… aplikacjฤ™. Moลผe rรณwnieลผ zawieraฤ‡ inne skrypty, ktรณrych uลผywasz do konfigurowania i uaktualniania aplikacji.

Konfiguracja โ€“ Zawiera pliki konfiguracyjne โ€“ baza danych.yml, ล›rodowisko.rb, trasy.rbitp., ktรณre aplikacja musi uruchomiฤ‡.

DB โ€“ Ten katalog zawiera pliki/skrypty uลผywane do zarzฤ…dzania bazฤ… danych aplikacji.

biblioteka โ€“ Katalog ten zawiera rozszerzony moduล‚ dla Twojej aplikacji.

dziennik - Zawiera pliki dziennika โ€“ serwer.log, rozwรณj.log, test.log i produkcja.logitp., ktรณre sฤ… uลผywane do debugowania lub monitorowania aplikacji.

publicznoล›ฤ‡ - Ten katalog zawiera pliki statyczne i skompilowane zasoby, takie jak pliki HTML, Javascript plikรณw, obrazรณw i arkuszy stylรณw.

prรณba โ€“ W tym katalogu przechowywane sฤ… pliki testowe, ktรณre piszesz w celu przetestowania funkcjonalnoล›ci aplikacji.

tmp โ€“ Ten katalog zawiera pliki tymczasowe, takie jak pliki pamiฤ™ci podrฤ™cznej i pliki pid.

sprzedawca - Ten katalog zawiera biblioteki innych firm.

plik klejnotรณw โ€“ Ten plik okreล›la, jakie sฤ… Twoje podstawowe wymagania dotyczฤ…ce klejnotรณw, aby uruchomiฤ‡ aplikacjฤ™ internetowฤ…. Moลผesz grupowaฤ‡ klejnoty w fazie rozwojowej, testowej lub produkcyjnej, a Railsy bฤ™dฤ… wiedzieฤ‡, kiedy uwzglฤ™dniฤ‡ kaลผdy klejnot.

Gemfile.lock โ€“ W przeciwieล„stwie do pliku Gemfile, ktรณry wyraลบnie zawiera listฤ™ klejnotรณw, ktรณre chcesz umieล›ciฤ‡ w swojej aplikacji, Gemfile.lock zawiera dodatkowo inne klejnoty, od ktรณrych zaleลผฤ… te, ktรณre wymienisz w pliku Gemfile, a ktรณre sฤ… nastฤ™pnie automatycznie instalowane w celu speล‚nienia zaleลผnoล›ci.

Readme.md โ€“ Uลผywasz tego pliku, aby udostฤ™pniฤ‡ istotne szczegรณล‚y dotyczฤ…ce aplikacji, takie jak to, co aplikacja robi, jak zainstalowaฤ‡ i uruchomiฤ‡ aplikacjฤ™.

Rakefile โ€“ Plik ten zawiera rรณลผne definicje zadaล„ rake, co pomaga w automatyzacji codziennych zadaล„ administracyjnych aplikacji.

config.ru โ€“ Jest to plik konfiguracyjny stojaka, ktรณry zapewnia interfejs do serwera WWW w celu uruchomienia aplikacji.

Zmieล„ katalog na โ€žaplikacja do zrobieniaโ€ katalog Railsy wygenerowane i uruchomione โ€žserwer szynowyโ€ aby uruchomiฤ‡ aplikacjฤ™. Typ localhost: 3000 w pasku adresu przeglฤ…darki internetowej, jeล›li wszystko poszล‚o dobrze, powinieneล› zobaczyฤ‡ poniลผszy rysunek.

Railsy โ€“ Struktury plikรณw projektu

To jest domyล›lna strona gล‚รณwna Twojej aplikacji, ktรณrฤ… zmienisz w dalszej czฤ™ล›ci tego samouczka Ruby on Rails. Moลผesz zatrzymaฤ‡ serwer, naciskajฤ…c โ€žCtrl-Cโ€.

Railsy โ€“ Generuj polecenia

Polecenie Rails generate wykorzystuje szablony do tworzenia wielu przydatnych rzeczy w Twojej aplikacji. Moลผesz uลผyฤ‡ tych generatorรณw, aby zaoszczฤ™dziฤ‡ duลผo czasu.

Pomaga w pisaniu standardowego kodu, kodu niezbฤ™dnego do dziaล‚ania aplikacji internetowej. Moลผesz biegaฤ‡ โ€žgenerowanie szynโ€ samodzielnie w wierszu poleceล„ lub terminalu, aby wyล›wietliฤ‡ listฤ™ dostฤ™pnych generatorรณw, jak pokazano poniลผej:

Railsy โ€“ Generuj polecenia

Moลผesz takลผe uruchomiฤ‡ โ€žszyny generujฤ… โ€žpolecenieโ€โ€ aby zobaczyฤ‡ opis dziaล‚ania polecenia. Oferuje wygodne opcje, ktรณre moลผna uruchomiฤ‡ za pomocฤ… polecenia i przykล‚adu uลผycia. Poniลผszy rysunek przedstawia wynik dziaล‚aniaโ€žszyny generujฤ… kontrolerโ€:

Railsy โ€“ Generuj polecenia

Uลผyjesz polecenia Rails generate scaffold, aby automatycznie utworzyฤ‡ model, widok i kontroler dla tworzonej aplikacji z listฤ… zadaล„ do wykonania. Uruchomiฤ‡' szyny generujฤ… rusztowanie lista rzeczy do zrobienia tytuล‚: ciฤ…g opis: tekst' w swoim terminalu (sprawdลบ, czy nadal znajdujesz siฤ™ w katalogu todo_app).

Spowoduje to utworzenie peล‚nego interfejsu sieciowego CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie) dla tabeli TodoLists.

Kolejnym przydatnym poleceniem, ktรณre warto znaฤ‡, jest โ€žszyny niszczฤ…โ€, to odwraca cokolwiek โ€žszyny generujฤ…โ€ฆโ€ robi.

Szyny โ€“ trasowanie

System routingu Railsรณw, router Rails, obsล‚uguje wszystkie ลผฤ…dania przychodzฤ…ce do Twojej aplikacji internetowej. Robi to poprzez sprawdzenie adresu URL przychodzฤ…cych ลผฤ…daล„, a nastฤ™pnie odwzorowuje kaลผde ลผฤ…danie na akcjฤ™ kontrolera odpowiedzialnฤ… za jego obsล‚ugฤ™, uลผywajฤ…c specjalnej skล‚adni okreล›lonej w pliku tras (config/routes.rb).

Plik routes pomaga kontrolowaฤ‡ kaลผdy aspekt adresu URL Twojej aplikacji internetowej. Rails domyล›lnie uลผywa projektu RESTful opartego na stylu architektonicznym REST, ktรณry zapewnia mapowanie miฤ™dzy czasownikami HTTP i ลผฤ…daniami (URL) na akcje kontrolera.

Plik tras zostaล‚ wygenerowany podczas uruchamiania โ€žszyny noweโ€ w poprzedniej sekcji tego samouczka. Kontynuujฤ…c tworzenie aplikacji Todo, uruchom nastฤ™pujฤ…ce polecenie'rails db:migrate' (wkrรณtce dowiesz siฤ™, co to robi)

Upewnij siฤ™, ลผe w wierszu poleceล„ nadal znajdujesz siฤ™ w katalogu gล‚รณwnym aplikacji (katalogu todo_app).

Nastฤ™pnie ponownie uruchom serwer za pomocฤ… โ€žserwer szynowyโ€. Rodzaj http://localhost:3000/todo_lists/ w przeglฤ…darce i naciล›nij Enter. Powinieneล› otrzymaฤ‡ stronฤ™ internetowฤ…, jak pokazano na poniลผszym rysunku przykล‚adu Ruby on Rails:

Szyny โ€“ wyznaczanie trasy

To jest widok list zadaล„ do wykonania wygenerowany przez polecenie scaffold i kontrolowany przez akcjฤ™ indeksowania elementu TodoListsController.

ลšmiaล‚o, dodaj listฤ™ rzeczy do zrobienia, klikajฤ…c โ€žNowa lista rzeczy do zrobieniaโ€ na stronie. Powinieneล› otrzymaฤ‡ stronฤ™ jak pokazano poniลผej:

Szyny โ€“ wyznaczanie trasy

Zwrรณฤ‡ uwagฤ™, ลผe adres URL zostaล‚ zmieniony na http://localhost:3000/todo_lists/new. To jest strona sล‚uลผฤ…ca do tworzenia nowej listy rzeczy do zrobienia i jest kontrolowana przez nowฤ… metodฤ™/akcjฤ™ TodoListsController.

Wprowadลบ tytuล‚ i opis listy zadaล„ do wykonania w formularzu, a nastฤ™pnie kliknij przycisk Utwรณrz listฤ™ zadaล„ do wykonania. Adres URL powinien zmieniฤ‡ siฤ™ na http://localhost:3000/todo_lists/1, pokazany na poniลผszym rysunku przykล‚adowego kodu Ruby on Rails:

Szyny โ€“ wyznaczanie trasy

To jest strona pokazu listy rzeczy do zrobienia i jest kontrolowana przez metodฤ™/akcjฤ™ show TodoListsController. Jeล›li wrรณcisz do http://localhost:3000/todo_lists/, powinieneล› teraz zobaczyฤ‡ poniลผszy rysunek z dodanฤ… nowฤ… listฤ… rzeczy do zrobienia:

Szyny โ€“ wyznaczanie trasy

Railsy byล‚y w stanie zmapowaฤ‡ rรณลผne ลผฤ…dania (URL) na odpowiedniฤ… akcjฤ™ TodoListsController, korzystajฤ…c z definicji trasy w config/routes.rb.

Jeล›li spojrzysz na ten plik, zobaczysz pojedynczฤ… liniฤ™ โ€žzasoby: listy rzeczy do zrobieniaโ€, to domyล›lny sposรณb Railsรณw na zapisywanie spokojnych tras. Ta pojedyncza linia tworzy siedem tras, wszystkie mapowane na kontroler TodoLists.

Zgodnie z przyjฤ™tฤ… konwencjฤ…, dziaล‚anie kaลผdego kontrolera jest rรณwnieลผ mapowane na konkretnฤ… operacjฤ™ CRUD (tworzenie, odczyt, aktualizacja i usuwanie) w bazie danych.

Moลผesz biegaฤ‡ โ€žtrasy grabieniaโ€ w wierszu poleceล„, aby zobaczyฤ‡ rรณลผne trasy dostฤ™pne w aplikacji. Poniลผszy rysunek przedstawia wynik dziaล‚ania โ€žtrasy kolejoweโ€ w wierszu poleceล„/terminalu.

Szyny โ€“ wyznaczanie trasy

Szyny โ€“ widoki

Warstwa Widok jest jednym z elementรณw paradygmatu MVC i odpowiada za generowanie odpowiedzi HTML na kaลผde ลผฤ…danie skierowane do Twojej aplikacji. Railsy domyล›lnie uลผywajฤ… ERB (Embedded Ruby), ktรณry jest potฤ™ลผnym systemem szablonรณw dla Ruby.

ERB sprawia, ลผe โ€‹โ€‹pisanie szablonรณw jest ล‚atwe i ล‚atwe w utrzymaniu, ล‚ฤ…czฤ…c zwykล‚y tekst z kodem Ruby w celu zastฤ™powania zmiennych i kontroli przepล‚ywu. Szablon ERB ma rozszerzenie .html, .erb lub .erb.

Najczฤ™ล›ciej bฤ™dziesz uลผywaฤ‡ kombinacji tylko dwรณch znacznikรณw, z ktรณrych kaลผdy powoduje, ลผe osadzony kod bฤ™dzie przetwarzany i obsล‚ugiwany w okreล›lony sposรณb.

Znacznik ze znakiem rรณwnoล›ci '<%=%>' wskazuje, ลผe osadzony kod jest wyraลผeniem i ลผe wynik kodu powinien zostaฤ‡ zastฤ…piony przez moduล‚ renderujฤ…cy podczas renderowania szablonu.

Drugi tag bez znaku rรณwnoล›ci โ€ž<%%>โ€ wskazuje moduล‚owi renderujฤ…cemu, ลผe wynik kodu nie powinien byฤ‡ zastฤ™powany/drukowany podczas renderowania szablonu.

Kaลผdy kontroler w aplikacji Railsowej ma odpowiadajฤ…cy mu podkatalog aplikacja/widoki, a kaลผda akcja/metoda w kontrolerze ma w tym katalogu odpowiedni plik .html i .erb.

Przyjrzyj siฤ™ aplikacji/widom aplikacji do zrobienia, ktรณrฤ… tworzysz. Znajdziesz podkatalog o nazwie โ€žlisty rzeczy do zrobieniaโ€ wewnฤ…trz tego podkatalogu .html.erb pliki o nazwach odpowiadajฤ…cych akcjom/metodom w pliku Listy zadaล„ sterownik.

Railsy โ€“ ActiveRecord, wzorzec aktywnego rekordu i ORM

ActiveRecord jest implementacjฤ… Ruby wzorca Active Record, ktรณry jest prostym wzorcem, w ktรณrym klasa reprezentuje tabelฤ™, a instancja klasy reprezentuje wiersz w tej klasie.

ActiveRecord jest popularnie okreล›lany jako ORM (Object Relational Mapping), technika umoลผliwiajฤ…ca zarzฤ…dzanie bazฤ… danych przy uลผyciu jฤ™zyka, ktรณry najbardziej Ci odpowiada. Jest niezaleลผny od bazy danych, dziฤ™ki czemu moลผna ล‚atwo przeล‚ฤ…czaฤ‡ siฤ™ miฤ™dzy bazami danych (na przykล‚ad SQLite, MySQL, PostgreSQL, Serwer SQL, Oracleitp.). Ten pakiet bardziej odpowiada wymaganiom aplikacji z tym samym kodem/logikฤ….

Tak wiฤ™c, jeล›li chcesz uzyskaฤ‡ tablicฤ™ zawierajฤ…cฤ… listฤ™ wszystkich list rzeczy do zrobienia w aplikacji, zamiast pisaฤ‡ kod inicjujฤ…cy poล‚ฤ…czenie z bazฤ… danych, wykonaj zapytanie SQL SELECT i przekonwertuj te wyniki na szyk.

W tym celu wystarczy wpisaฤ‡ โ€žTodoList.allโ€ a Active Record udostฤ™pnia tablicฤ™ wypeล‚nionฤ… obiektami TodoList, ktรณrymi moลผesz bawiฤ‡ siฤ™ wedล‚ug wล‚asnego uznania.

Wszystko, co musisz zrobiฤ‡, to skonfigurowaฤ‡ odpowiedniฤ… konfiguracjฤ™ w config/baza danych.yml, a Active Record obliczy wszystkie rรณลผnice pomiฤ™dzy rรณลผnymi systemami baz danych. Wiฤ™c kiedy przeล‚ฤ…czasz siฤ™ z jednego na drugi, nie musisz o tym myล›leฤ‡.

Skup siฤ™ na pisaniu kodu dla swojej aplikacji, a Active Record pomyล›li o szczegรณล‚ach niskiego poziomu poล‚ฤ…czenia z bazฤ… danych. Active Record korzysta z konwencji nazewnictwa, aby tworzyฤ‡ mapowanie miฤ™dzy modelami i tabelami bazy danych.

Railsy dokonujฤ… liczby mnogiej nazw klas modelu, aby znaleลบฤ‡ odpowiedniฤ… tabelฤ™ bazy danych. Zatem dla klasy TodoList ActiveRecord utworzy tabelฤ™ bazy danych o nazwie TodoLists.

Szyny โ€“ Migracje

Migracja Railsรณw to po prostu skrypt, ktรณrego uลผywasz do edycji bazy danych aplikacji. Sล‚uลผy do konfigurowania lub zmiany bazy danych i pozwala uniknฤ…ฤ‡ rฤ™cznego pisania kodu SQL w tym celu.

Uลผywa jฤ™zyka Ruby do definiowania zmian w schemacie bazy danych i umoลผliwia stosowanie kontroli wersji w celu zachowania synchronizacji bazy danych.

Migracje Railsรณw wykorzystujฤ… jฤ™zyk specyficzny dla domeny Ruby (DSL). Dziaล‚a to jak abstrakcja i umoลผliwia uลผycie lub zmianฤ™ silnika bazy danych w zaleลผnoล›ci od wymagaล„.

Moลผna je udostฤ™pniaฤ‡ kaลผdemu, kto pracuje nad aplikacjฤ…, a takลผe moลผna je wycofaฤ‡, aby cofnฤ…ฤ‡ wszelkie zmiany w bazie danych. Jest to mechanizm o wysokim poziomie bezpieczeล„stwa, poniewaลผ nie musisz siฤ™ martwiฤ‡ trwaล‚ym uszkodzeniem bazy danych.

Railsy โ€“ skojarzenia ActiveRecord

Poล‚ฤ…czenie miฤ™dzy dwoma modelami ActiveRecord jest znane jako asocjacja. Asocjacja znacznie uล‚atwia wykonywanie operacji na rรณลผnych rekordach w kodzie. Moลผna jฤ… podzieliฤ‡ na cztery kategorie: โ€“

One to One: โ€“ Oznacza, ลผe โ€‹โ€‹rekord zawiera dokล‚adnie jednฤ… instancjฤ™ innego modelu. Dobrym przykล‚adem jest profil uลผytkownika. Uลผytkownik ma tylko jeden profil. To uลผywa ma jeden sล‚owo kluczowe.

Jeden za duลผo: โ€“ Jest to najczฤ™stsze skojarzenie, ktรณre wskazuje, ลผe jeden model ma zero lub wiฤ™cej wystฤ…pieล„ innego modelu. Twรณj uลผytek ma _wiele sล‚owo kluczowe oznaczajฤ…ce to powiฤ…zanie.

Wiele do wielu: โ€“ To skojarzenie jest nieco bardziej skomplikowane i ActiveRecord zapewnia dwa sposoby poradzenia sobie z nim. Uลผywajฤ…c ma_i_naleลผy_do_wielu oraz ma wiele, co daje dostฤ™p do relacji zdefiniowanej w osobnej tabeli.

Polimorficzny jeden do wielu:- Jest to bardziej zaawansowane powiฤ…zanie dostฤ™pne w Railsach. Moลผna go uลผyฤ‡ do zdefiniowania modelu, ktรณry moลผe naleลผeฤ‡ do wielu rรณลผnych modeli w ramach jednego skojarzenia.

Railsy โ€“ weryfikacja ActiveRecord

Walidacja pomaga upewniฤ‡ siฤ™, ลผe masz prawidล‚owe dane, poniewaลผ praca z nieprawidล‚owymi danymi jest okropna i moลผe kosztowaฤ‡ Twoje pieniฤ…dze i firmฤ™.

Walidacja zapewnia takลผe dodatkowฤ… warstwฤ™ zabezpieczeล„ aplikacji przed zล‚oล›liwymi uลผytkownikami, ktรณrzy chcฤ… uzyskaฤ‡ dostฤ™p do informacji w bazie danych. Railsy oferujฤ… ล‚adne API pomocy przy sprawdzaniu poprawnoล›ci w ActiveRecord, dziฤ™ki czemu Twoja baza danych jest czysta, bezpieczna i wolna od bล‚ฤ™dรณw.

Walidacja ActiveRecord jest przeprowadzana na obiektach modelu przed zapisaniem w bazie danych, co czyni je bardziej niezawodnymi i stanowi najlepszฤ… praktykฤ™ do stosowania podczas tworzenia aplikacji.

Nastฤ™pujฤ…ce metody ActiveRecord wywoล‚ujฤ… walidacje, gdy sฤ… uลผywane lub wywoล‚ywane na obiektach modelu โ€“ twรณrz, twรณrz!, zapisuj, zapisuj!, aktualizuj i aktualizuj!. Te z hukiem (twรณrz!, oszczฤ™dzaj! i zaktualizuj!) zgล‚oล› wyjฤ…tek, jeล›li rekord jest nieprawidล‚owy, chociaลผ nie jest to prawdฤ….

Najczฤ™ล›ciej dostฤ™pnymi pomocnikami w sprawdzaniu poprawnoล›ci ActiveRecord sฤ…: -

Potwierdzenie:โ€“ Ten pomocnik sprawdzania poprawnoล›ci jest przydatny do sprawdzania poprawnoล›ci dwรณch pรณl zawierajฤ…cych ten sam wpis. np. hasล‚o i potwierdzenie hasล‚a, jest uลผywane w poล‚ฤ…czeniu z pomocnikiem sprawdzania obecnoล›ci.

Obecnoล›ฤ‡:โ€“ Sprawdza, czy pole nie jest puste.

unikalnoล›ฤ‡: zapewnia unikalnฤ… wartoล›ฤ‡ pola, np. nazwฤ™ uลผytkownika

Dล‚ugoล›ฤ‡:- Aby wymusiฤ‡ ograniczenie dล‚ugoล›ci znaku w polu

Moลผesz takลผe utworzyฤ‡ niestandardowฤ… weryfikacjฤ™, korzystajฤ…c z metody validation i przekazujฤ…c jej nazwฤ™ niestandardowej metody sprawdzania poprawnoล›ci.

Moลผesz sprawdziฤ‡ model bล‚ฤ…d obiekt, aby dowiedzieฤ‡ siฤ™, dlaczego walidacja. Mamy nadziejฤ™, ลผe masz kilka pomysล‚รณw na ograniczenie i zwiฤ™kszenie bezpieczeล„stwa aplikacji, tak aby do bazy danych mogล‚y trafiaฤ‡ wyล‚ฤ…cznie bezpieczne dane.

Railsy โ€“ ActionController

Kontroler Rails jest centrum Twojej aplikacji internetowej. Uล‚atwia i koordynuje komunikacjฤ™ pomiฤ™dzy uลผytkownikiem, modelami i widokami.

Klasy kontrolerรณw dziedziczฤ… z klasy ApplicationController, ktรณra zawiera kod, ktรณry moลผna uruchomiฤ‡ na wszystkich innych kontrolerach i dziedziczy z klasy ActionController.

Kontroler zapewnia Twojej aplikacji nastฤ™pujฤ…ce funkcje:

  • Kieruje ลผฤ…dania zewnฤ™trzne do dziaล‚aล„ wewnฤ™trznych
  • Zarzฤ…dza buforowaniem, zwiฤ™kszajฤ…c wydajnoล›ฤ‡ aplikacji
  • Zarzฤ…dza metodami pomocniczymi, ktรณre rozszerzajฤ… moลผliwoล›ci szablonรณw widokรณw. Zarzฤ…dza takลผe sesjami uลผytkownikรณw, zapewniajฤ…c im pล‚ynne korzystanie z aplikacji.

Szyny โ€“ konfiguracje

Moลผesz skonfigurowaฤ‡ rรณลผne komponenty, takie jak inicjatory, zasoby, generatory, middleware itp., uลผywajฤ…c inicjatorรณw aplikacji Rails i plikรณw konfiguracyjnych w katalogu config. Pliki takie jak config/application.rb, config/environments/development.rb i config/environments/test.rb itp. Moลผesz rรณwnieลผ skonfigurowaฤ‡ niestandardowe ustawienia dla swojej aplikacji.

Railsy โ€“ debugowanie

W miarฤ™ tworzenia aplikacji nadejdzie czas, gdy bฤ™dziesz musiaล‚/musiaล‚a debugowaฤ‡ swรณj kod. Railsy uล‚atwiajฤ… to przy uลผyciu klejnotu byebug. Sesjฤ™ debugowania moลผna rozpoczฤ…ฤ‡, umieszczajฤ…c sล‚owo kluczowe โ€žbyebegโ€ w dowolnym miejscu kodu aplikacji.

Spowoduje to tymczasowe zatrzymanie wykonywania w tym momencie. Klejnot byebug udostฤ™pnia kilka poleceล„ do uลผycia. Najbardziej przydatne to:

  • Nastฤ™pny: polecenie umoลผliwiajฤ…ce przejล›cie do nastฤ™pnej linii kodu z pominiฤ™ciem wszystkich metod wywoล‚anych wykonaniem bieลผฤ…cej linii.
  • krok: jest to podobne do polecenia โ€žnastฤ™pnyโ€, ale powoduje przejล›cie do kaลผdego wywoล‚anego polecenia.
  • zล‚amaฤ‡: powoduje to zatrzymanie wykonywania kodu.
  • kontynuowaฤ‡ kontynuuje wykonanie kodu.

Dostฤ™pne sฤ… inne pereล‚ki do debugowania, takie jak โ€žpryโ€, i wszystkie zapewniajฤ… podobne funkcjonalnoล›ci, ale nieco innฤ… skล‚adniฤ™. Klejnotรณw debugowania nie naleลผy uลผywaฤ‡ w ล›rodowisku produkcyjnym, poniewaลผ stwarza to ryzyko dla aplikacji i zล‚e doล›wiadczenia dla uลผytkownikรณw aplikacji.

Istniejฤ… pliki dziennika, ktรณre moลผna sprawdziฤ‡ pod kฤ…tem bล‚ฤ™dรณw w produkcji i je obsล‚uลผyฤ‡. Podczas opracowywania aplikacji naleลผy stosowaฤ‡ podejล›cie TDD (programowanie oparte na testach), aby przed wdroลผeniem w ล›rodowisku produkcyjnym upewniฤ‡ siฤ™, ลผe wszystko dziaล‚a dobrze.

Podsumowanie

  • Ruby jest czysto obiektowym jฤ™zykiem programowania
  • Ruby ma eleganckฤ… skล‚adniฤ™, ktรณra jest ล‚atwa do odczytania i zapisu.
  • Rails to framework programistyczny napisany w jฤ™zyku Ruby do tworzenia aplikacji internetowych
  • Proces instalacji bฤ™dzie zaleลผaล‚ od Twojego systemu operacyjnego.
  • Railsy sฤ… spakowane jako klejnot Ruby i moลผna ich uลผywaฤ‡ do tworzenia rรณลผnorodnych aplikacji.
  • W tym samouczku utworzysz aplikacjฤ™ z listฤ… zadaล„ do wykonania. Uruchom polecenie followincomm'n'n' 'rails netoda'p'p'p' w terminalu R, aby utworzyฤ‡ aplikacjฤ™.
  • Polecenie Rails generate wykorzystuje szablony do tworzenia wielu przydatnych rzeczy w aplikacji.
  • System routingu Rails, router Rails pomaga obsล‚uลผyฤ‡ wszystkie ลผฤ…dania przychodzฤ…ce do Twojej aplikacji internetowej.
  • Warstwa Widok jest jednym z elementรณw paradygmatu MVC i odpowiada za generowanie odpowiedzi HTML na kaลผde ลผฤ…danie skierowane do Twojej aplikacji.
  • ActiveRecord jest implementacjฤ… Ruby wzorca Active Record.
  • Migracja Railsรณw to po prostu skrypt, ktรณrego uลผywasz do edycji bazy danych aplikacji.
  • Poล‚ฤ…czenie pomiฤ™dzy dwoma modelami ActiveRecord nazywane jest skojarzeniem.
  • Walidacja pomaga upewniฤ‡ siฤ™, ลผe masz prawidล‚owe dane, poniewaลผ praca z nieprawidล‚owymi danymi jest okropna i moลผe kosztowaฤ‡ Twoje pieniฤ…dze i firmฤ™.
  • Kontroler Rails pomaga uล‚atwiฤ‡ i koordynowaฤ‡ komunikacjฤ™ pomiฤ™dzy uลผytkownikiem, modelami i widokami.
  • Rail pomaga skonfigurowaฤ‡ rรณลผne komponenty, takie jak inicjatory, zasoby, generatory, oprogramowanie poล›redniczฤ…ce itp.

Podsumuj ten post nastฤ™pujฤ…co: