Samouczek Ruby on Rails

โšก Inteligentne podsumowanie

Samouczek Ruby on Rails przedstawia framework internetowy typu open source napisany w Ruby, ktรณry obsล‚uguje Airbnb, GitHub i Shopify. Przewodnik obejmuje instalacjฤ™ na Windows, Mac i Linux, generatory Rails, routing, widoki, ActiveRecord, walidacje i debugowanie.

  • ๐Ÿ’Ž Jฤ™zyk i struktura: Ruby to dynamiczny, obiektowy jฤ™zyk zaprojektowany z myล›lฤ… o czytelnoล›ci, a Rails to w peล‚ni oparty na nim framework MVC do obsล‚ugi przesyล‚ek.ping szybko aplikacje internetowe.
  • ๐Ÿ› ๏ธ. Konfiguracja miฤ™dzyplatformowa: Zainstaluj Ruby i Rails na Windows korzystajฤ…c z RubyInstaller, na Macu za poล›rednictwem Homebrew i na Ubuntu Linux przez apt, a nastฤ™pnie gem install rails.
  • ๐Ÿ›๏ธ. Zasady przewodnie: Rails wymusza zasady โ€žNie powtarzaj siฤ™โ€ i โ€žKonwencja ponad konfiguracjฤ…โ€, dziฤ™ki czemu zespoล‚y piszฤ… mniej szablonรณw i trzymajฤ… siฤ™ przewidywalnej struktury projektu.
  • โš™๏ธ Generatori routing: Uลผyj wygenerowanego szkieletu Rails do utworzenia szkieletu kodu CRUD, a nastฤ™pnie polegaj na pliku config/routes.rb, aby zmapowaฤ‡ RESTful URLs do akcji kontrolera w sekundach.
  • ๐Ÿ—„๏ธ Moc ActiveRecord: ActiveRecord mapuje klasy Ruby na tabele bazy danych, obsล‚uguje migracje, skojarzenia i walidacje oraz zapewnia spรณjnoล›ฤ‡ danych w rรณลผnych ล›rodowiskach.

Samouczek Ruby on Rails

Co to jest Rubin?

Rubin to wysokopoziomowy, interpretowany, obiektowy jฤ™zyk programowania. Jest to dynamiczny jฤ™zyk open-source, za ktรณrym stoi liczna spoล‚ecznoล›ฤ‡. Ruby zostaล‚ zaprojektowany z myล›lฤ… o prostocie i produktywnoล›ci. Zachฤ™ca do pisania kodu oprogramowania, w ktรณrym czล‚owiek jest najwaลผniejszy, a komputer dopiero potem. Yukihiro Matsumoto stworzyล‚ Ruby w Japonii w 1995 roku.

Co to jest Railsy?

Rails to framework programistyczny napisany w jฤ™zyku Ruby do tworzenia aplikacji internetowych. Zostaล‚ stworzony jako fundament aplikacji Basecamp, a nastฤ™pnie udostฤ™pniony jako oprogramowanie open source w 2004 roku. Rails oferuje wiele wbudowanych standardowych funkcji i funkcjonalnoล›ci, co czyni go odpowiednim wyborem dla prototypรณw MVP.ping i szybki rozwรณj produktu.

Rails zostaล‚ stworzony przez Davida Heinemeiera Hanssona, znanego jako DHH. Jest to jedno z najbardziej wpล‚ywowych i popularnych narzฤ™dzi do tworzenia aplikacji internetowych. Jest uลผywany przez najwiฤ™ksze serwisy, takie jak Airbnb, GitHub i Shopify.

Dlaczego szyny?

Przed zainstalowaniem zestawu narzฤ™dzi warto zrozumieฤ‡, dlaczego Rails pozostaje popularnym wyborem dla firm zajmujฤ…cych siฤ™ statkami.ping szybko aplikacje internetowe.

  • Rails jest dostฤ™pny w postaci pakietu Ruby gem i moลผna go uลผywaฤ‡ do tworzenia szerokiej gamy aplikacji.
  • Umoลผliwia tworzenie standardowych aplikacji internetowych, witryn e-commerce, systemรณw zarzฤ…dzania treล›ciฤ… i innych.
  • Rails to kompleksowy framework zawierajฤ…cy wszystko, czego potrzebujesz do tworzenia aplikacji internetowych opartych na bazie danych, wykorzystujฤ…cych wzorzec Model-View-Controller (MVC).
  • Wszystkie warstwy zaprojektowano tak, aby bezproblemowo ze sobฤ… wspรณล‚pracowaล‚y, dziฤ™ki czemu projekty Rails zazwyczaj wymagajฤ… mniejszej liczby linii kodu niลผ podobne projekty w innych frameworkach.

Jak pobraฤ‡ i zainstalowaฤ‡ Ruby na Windows

Proces instalacji zaleลผy od systemu operacyjnego. W kolejnych sekcjach opisano instalacjฤ™ Ruby na Windows, Mac i Linux.

Krok 1) Pobierz Rubyinstaller.
Najล‚atwiejszy sposรณb na zainstalowanie Ruby na twoim Windows komputer jest dostฤ™pny za pomocฤ… instalatora Ruby, dostฤ™pnego pod adresem https://rubyinstaller.org/.

Po pobraniu uruchom instalator.

Krok 2) Kliknij pobrany instalator.
Double-kliknij pobrany plik instalatora, na przykล‚ad rubyinstaller-2.4.1-2-x64.exe.

Krok 3) Zaakceptuj licencjฤ™.
Zaznacz opcjฤ™ โ€žAkceptujฤ™ licencjฤ™โ€ i kliknij przycisk โ€žDalejโ€. Powinieneล› zobaczyฤ‡ poniลผszy ekran.

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 โ€žInstalujโ€, aby rozpoczฤ…ฤ‡ instalacjฤ™. Po jej zakoล„czeniu powinieneล› zobaczyฤ‡ poniลผszy ekran.

Pobierz i zainstaluj Ruby na Windows

Krok 5) Kliknij Zakoล„cz.
Nie odznaczaj opcji instalujฤ…cej MSYS2. Kliknij โ€žZakoล„czโ€, aby zakoล„czyฤ‡ instalacjฤ™. Otworzy siฤ™ okno wiersza poleceล„, jak pokazano poniลผej.

Pobierz i zainstaluj Ruby na Windows

Krok 6) Zainstaluj MSYS2.
Ten krok instaluje MSYS2, platformฤ™ kompilacji zawierajฤ…cฤ… menedลผera pakietรณw, ktรณry umoลผliwia ล‚atwฤ… instalacjฤ™ pakietรณw na Windows.

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

Pobierz i zainstaluj Ruby na Windows

Instalowanie szyn

Powinieneล› mieฤ‡ zainstalowany Ruby z poprzedniej sekcji. Nastฤ™pnie zainstaluj Railsy. Moลผesz zainstalowaฤ‡ Railsy za pomocฤ… pakietu z Instalator szynale pakiet czฤ™sto nie zawiera najnowszej wersji wszystkich wymaganych zaleลผnoล›ci.

Jeล›li masz juลผ zainstalowanฤ… najnowszฤ… wersjฤ™ Ruby i podstawowe pakiety RubyGems oraz rozszerzenia, po prostu uruchom 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ฤ… JavaAby ล›rodowisko uruchomieniowe skryptu dziaล‚aล‚o poprawnie. Pobierz Node w https://nodejs.org.

Bardziej powszechne i preferowane podejล›cie Windows jest uลผyฤ‡ Windows Podsystem dla Linuksa. Zapewnia ล›rodowisko GNU/Linux z narzฤ™dziami wiersza poleceล„, programami uลผytkowymi i popularnymi aplikacjami bezpoล›rednio w nim. Windows.

Instalowanie Ruby na Macu

Na Twoim Macu jest juลผ preinstalowany Ruby. Jednak preinstalowana wersja jest czฤ™sto nieaktualna, dlatego warto zainstalowaฤ‡ nowszฤ….

Najล‚atwiejszym sposobem wykonania tego jest uลผycie menedลผera pakietรณw, takiego jak Homebrew. Najpierw moลผe byฤ‡ konieczna instalacja Homebrew poprzez uruchomienie poniลผszego polecenia w Terminalu.

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

Wyล›wietli siฤ™ ostrzeลผenie i proล›ba o podanie hasล‚a. Wprowadลบ hasล‚o do Maca (znaki nie bฤ™dฤ… siฤ™ pojawiaฤ‡ podczas wpisywania) i naciล›nij Enter po zakoล„czeniu. Nastฤ™pnie uruchom to polecenie Homebrew, aby zainstalowaฤ‡ Ruby na Macu.

brew install ruby

Nastฤ™pnie uruchom to polecenie:

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

Spowoduje to, ลผe nowa instalacja jฤ™zyka Ruby zostanie ustawiona jako domyล›lna wersja Ruby w systemie, a nie wstฤ™pnie zainstalowana wersja Ruby.

Aby potwierdziฤ‡ pomyล›lnฤ… instalacjฤ™, uruchom nastฤ™pujฤ…ce polecenie w terminalu:

ruby --version

Wyล›wietla numer zainstalowanej wersji Ruby. Wynik wyglฤ…da mniej wiฤ™cej tak:

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

Instalowanie Ruby na Ubuntu (Linux)

Najprostszy sposรณb instalacji Ruby na Ubuntu odbywa siฤ™ za pomocฤ… menedลผera pakietรณw apt. Uruchom nastฤ™pujฤ…ce polecenia w terminalu, aby zainstalowaฤ‡ najnowszฤ… wersjฤ™ Ruby z Ubuntu repozytoria.

  • sudo apt update โ€“ To aktualizuje domyล›lnฤ… Ubuntu repozytoria.
  • sudo apt install ruby-full โ€“ Spowoduje to pobranie i instalacjฤ™ najnowszej wersji Ruby.

Aby potwierdziฤ‡ instalacjฤ™, uruchom ruby โ€“ wersja. Wyล›wietla wersjฤ™ Ruby, ktรณrฤ… zainstalowaล‚eล›.

Instalowanie szyn na Ubuntu (Linux)

Aby zainstalowaฤ‡ Rails na komputerze z systemem Linux, wykonaj poniลผsze czynnoล›ci.

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

Krok 2) Uruchom montaลผ szyn gem aby zainstalowaฤ‡ najnowszฤ… wersjฤ™ Railsรณw na swoim komputerze.

Krok 3) Zainstaluj pakiet gem, aby uล‚atwiฤ‡ zarzฤ…dzanie zaleลผnoล›ciami w aplikacjach Rails. Uruchom klejnot do instalacji klejnotรณw.

Dwie zasady Rails

Rails opiera siฤ™ na podstawowych zasadach projektowania oprogramowania i zachฤ™ca do ich stosowania.

Dwa najczฤ™stsze to:

  • Nie powtarzaj siฤ™ (DRY) โ€“ prowadzi to do zwiฤ™zล‚ego, spรณjnego i ล‚atwego w utrzymaniu kodu.
  • Konwencja ponad konfiguracjฤ… โ€“ Rails jest wstฤ™pnie skonfigurowany z rozsฤ…dnymi ustawieniami domyล›lnymi, ktรณre pasujฤ… do wiฤ™kszoล›ci powszechnych zastosowaล„. Dziฤ™ki temu tworzenie aplikacji jest szybsze i mniej kodu do utrzymania.

Railsy โ€“ Struktury plikรณw projektu

Po zainstalowaniu Rails w systemie utwรณrz aplikacjฤ™ Rails. W kolejnych sekcjach omรณwimy przykล‚ad Ruby on Rails, budujฤ…c aplikacjฤ™ z listฤ… zadaล„ do wykonania. Uruchom nastฤ™pujฤ…ce polecenie w terminalu, aby utworzyฤ‡ aplikacjฤ™:

rails new todo_app

To polecenie tworzy katalog o nazwie todo_app w bieลผฤ…cym katalogu zawierajฤ…cym podstawowฤ… strukturฤ™ folderรณw aplikacji internetowej Rails, jak pokazano poniลผej.

Railsy โ€“ Struktury plikรณw projektu

Oto gล‚รณwne katalogi wygenerowane dla projektu:

Aplikacja โ€“ grupuje podkatalogi dla interfejsu uลผytkownika/ukล‚adu (widoki i funkcje pomocnicze), kontrolera (pliki kontrolerรณw) i modeli (logika biznesowa/aplikacji).

aplikacja/kontrolery โ€“ przechowuje pliki kontrolerรณw uลผywane przez Rails do obsล‚ugi ลผฤ…daล„ od klienta.

aplikacja/zasoby โ€“ zawiera pliki statyczne potrzebne front-endowi aplikacji, pogrupowane wedล‚ug typu: JAVASCRIPT plikรณw, obrazรณw i arkuszy stylรณw.

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

aplikacja/modele โ€“ zawiera pliki modelujฤ…ce bazฤ™ danych Twojej aplikacji. Klasy modeli znacznie uล‚atwiajฤ… pracฤ™ z bazฤ… danych.

aplikacja/widoki โ€“ przechowuje pliki szablonรณw/ukล‚adรณw, z ktรณrymi uลผytkownik Twojej aplikacji wchodzi w interakcjฤ™. Szablony ล‚ฤ…czฤ… kod HTML z danymi z bazy danych.

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

config โ€“ przechowuje pliki konfiguracyjne takie jak baza danych.yml, ล›rodowisko.rb, trasy.rbitp., ktรณrych Twoja aplikacja potrzebuje do uruchomienia.

db โ€“ zawiera pliki i skrypty sล‚uลผฤ…ce do zarzฤ…dzania bazฤ… danych aplikacji.

lib โ€“ zawiera rozszerzone moduล‚y dla Twojej aplikacji.

log โ€“ zawiera pliki dziennika, takie jak serwer.log, rozwรณj.log, test.log i produkcja.log, uลผywany do debugowania i monitorowania aplikacji.

publiczny โ€“ zawiera pliki statyczne i skompilowane zasoby, takie jak pliki HTML, JavaPliki skryptรณw, obrazy i arkusze stylรณw.

test โ€“ zawiera pliki testowe, ktรณre piszesz w celu przetestowania funkcjonalnoล›ci swojej aplikacji.

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

sprzedawca โ€“ zawiera biblioteki stron trzecich.

Plik klejnotรณw โ€“ okreล›la podstawowe wymagania dotyczฤ…ce gemรณw do uruchomienia aplikacji webowej. Moลผesz grupowaฤ‡ gemy na deweloperskie, testowe lub produkcyjne, a Rails bฤ™dzie wiedziaล‚, kiedy uwzglฤ™dniฤ‡ kaลผdy gem.

Gemfile.lock โ€“ w przeciwieล„stwie do pliku Gemfile, ktรณry jawnie wymienia gemy, ktรณre chcesz mieฤ‡ w swojej aplikacji, plik Gemfile.lock zawiera dodatkowo inne gemy, od ktรณrych zaleลผฤ… te wymienione w pliku Gemfile. Sฤ… one instalowane automatycznie, aby speล‚niฤ‡ zaleลผnoล›ci.

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

Plik rakefile โ€“ zawiera rรณลผne definicje zadaล„ rake, ktรณre pomagajฤ… zautomatyzowaฤ‡ codzienne zadania administracyjne Twojej aplikacji.

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

Zmieล„ katalog na todo_app katalog Railsy wygenerowane i uruchomione serwer Rails aby uruchomiฤ‡ aplikacjฤ™. Typ localhost: 3000 w pasku adresu przeglฤ…darki internetowej. Jeล›li wszystko poszล‚o dobrze, powinieneล› zobaczyฤ‡ poniลผszy ekran.

Railsy โ€“ Struktury plikรณw projektu

To jest domyล›lna strona gล‚รณwna Twojej aplikacji. Zmienisz jฤ… w dalszej czฤ™ล›ci tego samouczka Ruby on Rails. Moลผesz zatrzymaฤ‡ serwer, naciskajฤ…c Ctrl + C.

Rails โ€“ Generowanie poleceล„

Polecenie generowania w Railsach wykorzystuje szablony do tworzenia wielu przydatnych elementรณw w aplikacji. Te generatory oszczฤ™dzajฤ… mnรณstwo czasu.

Piszฤ… szablonowy kod, ktรณry jest niezbฤ™dny do dziaล‚ania Twojej aplikacji internetowej. Uruchom szyny generujฤ… 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ฤ… Aby zobaczyฤ‡ opis dziaล‚ania polecenia. Zawiera ono listฤ™ wygodnych opcji i przykล‚ad uลผycia. Poniลผszy rysunek przedstawia wynik dziaล‚ania polecenia szyny generujฤ… kontroler.

Railsy โ€“ Generuj polecenia

Uลผyj polecenia generowania rusztowania w Rails, aby automatycznie utworzyฤ‡ model, widok i kontroler dla tworzonej aplikacji listy zadaล„. Uruchom poniลผsze polecenie w terminalu (upewnij siฤ™, ลผe nadal jesteล› w todo_app informator):

rails generate scaffold todo_list title:string description:text

Tworzy peล‚ny interfejs internetowy CRUD (Tworzenie, Odczyt, Aktualizacja, Usuwanie) dla tabeli TodoLists.

Kolejnym przydatnym poleceniem, ktรณre warto znaฤ‡, jest szyny niszczฤ…. Odwraca wszystko szyny generujฤ… robi.

Szyny โ€“ wyznaczanie trasy

System routingu Rails, zwany routerem Rails, obsล‚uguje wszystkie ลผฤ…dania przychodzฤ…ce do Twojej aplikacji internetowej. Bada URL kaลผdego ลผฤ…dania i mapuje je na akcjฤ™ kontrolera odpowiedzialnฤ… za jego obsล‚ugฤ™, uลผywajฤ…c skล‚adni okreล›lonej w pliku tras (config/routes.rb).

Plik tras kontroluje wszystko URL aspekt Twojej aplikacji internetowej. Rails wykorzystuje projekt RESTful oparty na stylu architektonicznym REST, ktรณry zapewnia mapฤ™ping miฤ™dzy czasownikami HTTP a ลผฤ…daniem URLs do dziaล‚aล„ kontrolera.

Plik tras zostaล‚ wygenerowany podczas uruchamiania szyny nowe wczeล›niej. Kontynuujฤ…c tworzenie aplikacji Todo, uruchom nastฤ™pujฤ…ce polecenie:

rails db:migrate

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

Uruchom ponownie serwer za pomocฤ… serwer Rails. Rodzaj http://localhost:3000/todo_lists/ w przeglฤ…darce i naciล›nij Enter. Powinna wyล›wietliฤ‡ siฤ™ strona internetowa podobna do poniลผszej.

Szyny โ€“ wyznaczanie trasy

To jest widok listy zadaล„ do wykonania wygenerowany przez polecenie rusztowania, ktรณry jest kontrolowany przez kontroler TodoListsController wskaลบnik akcji.

Dodaj listฤ™ zadaล„, klikajฤ…c โ€žNowa lista zadaล„โ€ na stronie. Powinieneล› zobaczyฤ‡ poniลผszy ekran.

Szyny โ€“ wyznaczanie trasy

Wskazรณwka URL jest teraz http://localhost:3000/todo_lists/new. To strona sล‚uลผฤ…ca do tworzenia nowej listy zadaล„ do wykonania, ktรณra jest kontrolowana przez kontroler TodoListsController. nowych Metoda.

Wprowadลบ tytuล‚ i opis listy zadaล„ do wykonania w formularzu i kliknij โ€žUtwรณrz listฤ™ zadaล„ do wykonaniaโ€. URL powinien zmieniฤ‡ siฤ™ na http://localhost:3000/todo_lists/1, jak pokazano niลผej.

Szyny โ€“ wyznaczanie trasy

To jest strona pokazowa listy zadaล„ do wykonania, kontrolowanej przez kontroler TodoListsController. pokazaฤ‡ metoda. Jeล›li wrรณcisz do http://localhost:3000/todo_lists/, teraz powinieneล› zobaczyฤ‡ poniลผszy ekran z dodanฤ… nowฤ… listฤ… zadaล„ do wykonania.

Szyny โ€“ wyznaczanie trasy

Rails byล‚ w stanie zmapowaฤ‡ kaลผde ลผฤ…danie do odpowiedniej akcji TodoListsController, korzystajฤ…c z definicji trasy w config/routes.rb.

Jeล›li zajrzysz do tego pliku, zobaczysz pojedynczฤ… liniฤ™ zasoby :todo_lists, co jest domyล›lnym sposobem Railsรณw na zapisywanie tras RESTful. Ten pojedynczy wiersz tworzy siedem tras, wszystkie mapowaneping do kontrolera TodoLists.

Zgodnie z konwencjฤ…, kaลผda akcja kontrolera jest mapowana na konkretnฤ… operacjฤ™ CRUD (Utwรณrz, Odczytaj, Aktualizuj, Usuล„) w bazie danych.

Uruchom trasy kolejowe w wierszu poleceล„, aby zobaczyฤ‡ rรณลผne trasy dostฤ™pne w aplikacji. Poniลผszy rysunek przedstawia wynik uruchomienia trasy kolejowe.

Szyny โ€“ wyznaczanie trasy

Rails โ€“ Widoki

Warstwa widoku jest jednym z komponentรณw paradygmatu MVC i odpowiada za generowanie odpowiedzi HTML dla kaลผdego ลผฤ…dania kierowanego do aplikacji. Rails domyล›lnie korzysta z ERB (Embedded Ruby), ktรณry jest zaawansowanym systemem szablonรณw dla Ruby.

ERB uล‚atwia pisanie i utrzymanie szablonรณw, ล‚ฤ…czฤ…c zwykล‚y tekst z kodem Ruby w celu podstawiania zmiennych i kontroli przepล‚ywu. Szablon ERB wykorzystuje .html.erb rozbudowa.

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

Tag ze znakiem rรณwnoล›ci <%=%> oznacza, ลผe โ€‹โ€‹osadzony kod jest wyraลผeniem i wynik kodu powinien zostaฤ‡ podstawiony do danych wyjล›ciowych podczas renderowania szablonu.

Drugi tag bez znaku rรณwnoล›ci <%%> informuje renderer, ลผe wynik kodu nie powinien byฤ‡ podstawiany ani drukowany w wyjล›ciu.

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

Spรณjrz na aplikacja/widoki aplikacji Todo, ktรณrฤ… tworzysz. Znajdziesz podkatalog o nazwie listy_do_zrobienia zawierajฤ…ce .html.erb pliki o nazwach odpowiadajฤ…cych akcjom w Listy zadaล„ sterownik.

Railsy โ€“ ActiveRecord, wzorzec aktywnego rekordu i ORM

ActiveRecord to implementacja wzorca Active Record w jฤ™zyku Ruby. W tym wzorcu klasa reprezentuje tabelฤ™ bazy danych, a instancja klasy reprezentuje wiersz w tej tabeli.

ActiveRecord jest powszechnie nazywany ORM (Object Relational Map)ping) โ€“ technika, ktรณra pozwala zarzฤ…dzaฤ‡ bazฤ… danych w jฤ™zyku, w ktรณrym czujesz siฤ™ najlepiej. Jest ona niezaleลผna od bazy danych, dziฤ™ki czemu moลผesz ล‚atwo przeล‚ฤ…czaฤ‡ siฤ™ miฤ™dzy bazami danych โ€“ na przykล‚ad SQLite, MySQL, PostgreSQL, SQL Server lub Oracle โ€” stosujฤ…c ten sam kod i logikฤ™.

Na przykล‚ad, aby uzyskaฤ‡ tablicฤ™ zawierajฤ…cฤ… wszystkie listy zadaล„ do wykonania w aplikacji, nie musisz pisaฤ‡ kodu, ktรณry otwiera poล‚ฤ…czenie, uruchamia zapytanie SQL SELECT i konwertuje wynik.

Po prostu piszesz Lista_do_wszystkich, a ActiveRecord zwraca tablicฤ™ wypeล‚nionฤ… obiektami TodoList, ktรณre moลผesz wykorzystaฤ‡ wedล‚ug wล‚asnego uznania.

Wszystko, co musisz zrobiฤ‡, to skonfigurowaฤ‡ konfiguracjฤ™ w config/baza danych.yml, a ActiveRecord uwzglฤ™dnia rรณลผnice miฤ™dzy systemami baz danych. Przechodzฤ…c z jednej bazy danych do drugiej, nie musisz przepisywaฤ‡ kodu.

Skupiasz siฤ™ na logice aplikacji, a ActiveRecord dba o szczegรณล‚y niskopoziomowe zwiฤ…zane z poล‚ฤ…czeniem z bazฤ… danych. Wykorzystuje konwencje nazewnictwa do mapowania modeli na tabele bazy danych.

Rails przeksztaล‚ca nazwy klas modeli na liczbฤ™ mnogฤ…, aby znaleลบฤ‡ odpowiedniฤ… tabelฤ™ w bazie danych. Zatem dla klasy Lista rzeczy do zrobieniaActiveRecord uลผywa tabeli bazy danych o nazwie listy_do_zrobienia.

Szyny โ€“ Migracje

Migracja Rails to skrypt, ktรณrego uลผywasz do rozwijania bazy danych swojej aplikacji. Sล‚uลผy do konfigurowania lub modyfikowania bazy danych bez koniecznoล›ci rฤ™cznego pisania kodu SQL.

Uลผywa jฤ™zyka Ruby do definiowania zmian schematu bazy danych i umoลผliwia stosowanie kontroli wersji w celu zachowania synchronizacji bazy danych w rรณลผnych ล›rodowiskach.

Migracje Rails wykorzystujฤ… jฤ™zyk Ruby Domain Specific Language (DSL). Dziaล‚a on jaktraci umoลผliwia korzystanie z Twojego silnika bazy danych lub zmianฤ™ go zaleลผnie od Twoich wymagaล„.

Migracje moลผna udostฤ™pniaฤ‡ wszystkim uลผytkownikom aplikacji, a takลผe cofaฤ‡ zmiany. To solidny mechanizm bezpieczeล„stwa, wiฤ™c nie musisz siฤ™ martwiฤ‡ o trwaล‚e uszkodzenie bazy danych.

Railsy โ€“ skojarzenia ActiveRecord

Poล‚ฤ…czenie miฤ™dzy dwoma modelami ActiveRecord nazywa siฤ™ asocjacjฤ…. Asocjacje znacznie uล‚atwiajฤ… wykonywanie operacji na powiฤ…zanych rekordach w kodzie. Istniejฤ… cztery popularne kategorie.

Jeden na jeden: Rekord zawiera dokล‚adnie jedno wystฤ…pienie innego modelu. Dobrym przykล‚adem jest profil uลผytkownika โ€” uลผytkownik ma tylko jeden profil. Uลผywa on ma jeden sล‚owo kluczowe.

Jeden za duลผo: najczฤ™stsze skojarzenie โ€” jeden model ma zero lub wiฤ™cej wystฤ…pieล„ innego modelu. Uลผyj ma wiele sล‚owo kluczowe oznaczajฤ…ce to powiฤ…zanie.

Wiele do wielu: nieco bardziej skomplikowane. ActiveRecord oferuje dwa sposoby obsล‚ugi: ma_i_naleลผy_do_wielu oraz ma_wiele :przez, co daje dostฤ™p do modelu ล‚ฤ…czenia zdefiniowanego w osobnej tabeli.

Polimorficzny jeden do wielu: Bardziej zaawansowane powiฤ…zanie w Rails. Definiuje model, ktรณry moลผe naleลผeฤ‡ do wielu rรณลผnych modeli w ramach jednego powiฤ…zania.

Railsy โ€“ weryfikacja ActiveRecord

Walidacja pomaga upewniฤ‡ siฤ™, ลผe posiadasz poprawne dane, poniewaลผ praca z nieprawdziwymi danymi jest ryzykowna i moลผe kosztowaฤ‡ Twojฤ… firmฤ™ pieniฤ…dze.

Walidacja zapewnia rรณwnieลผ dodatkowฤ… warstwฤ™ zabezpieczeล„ przed zล‚oล›liwymi uลผytkownikami prรณbujฤ…cymi wprowadziฤ‡ szkodliwe dane do bazy danych. Rails oferuje przejrzyste API narzฤ™dzi pomocniczych do walidacji w ActiveRecord, ktรณre zapewniajฤ… czystoล›ฤ‡, bezpieczeล„stwo i brak bล‚ฤ™dรณw w bazie danych.

Walidacje ActiveRecord sฤ… przeprowadzane na obiektach modelu przed zapisaniem ich w bazie danych, co zwiฤ™ksza ich niezawodnoล›ฤ‡ i zgodnoล›ฤ‡ z najlepszymi praktykami.

Nastฤ™pujฤ…ce metody ActiveRecord wyzwalajฤ… walidacjฤ™ po wywoล‚aniu na obiektach modelu: twรณrz, twรณrz!, zapisuj, zapisuj!, aktualizuj i aktualizuj!. Wersje z hukiem (utwรณrz!, zapisz! i zaktualizuj!) zgล‚asza wyjฤ…tek, jeล›li rekord jest nieprawidล‚owy, podczas gdy wersje bez funkcji bang zwracajฤ… wartoล›ฤ‡ false.

Najpopularniejszymi pomocnikami walidacji ActiveRecord sฤ…:

  • Potwierdzenie: Sprawdza, czy dwa pola majฤ… tฤ™ samฤ… wartoล›ฤ‡, na przykล‚ad hasล‚o i potwierdzenie hasล‚a. Jest uลผywany razem z narzฤ™dziem pomocniczym do walidacji obecnoล›ci.
  • Obecnoล›ฤ‡: sprawdza czy pole nie jest puste.
  • Wyjฤ…tkowoล›ฤ‡: zapewnia unikalnฤ… wartoล›ฤ‡ dla pola, na przykล‚ad nazwy uลผytkownika.
  • Dล‚ugoล›ฤ‡: wymusza ograniczenie dล‚ugoล›ci znaku w polu.

Moลผesz rรณwnieลผ utworzyฤ‡ wล‚asnฤ… niestandardowฤ… walidacjฤ™, uลผywajฤ…c uprawomocniฤ‡ metodฤ™ i przekazujฤ…c jej nazwฤ™ niestandardowej metody walidacji.

Sprawdลบ model bล‚ฤ™dy obiekt, aby dowiedzieฤ‡ siฤ™, dlaczego walidacja siฤ™ nie powiodล‚a. Daje to wszystko, czego potrzebujesz, aby Twoja aplikacja byล‚a bardziej ograniczona i bezpieczna, umoลผliwiajฤ…c dostฤ™p do bazy danych tylko prawidล‚owych danych.

Railsy โ€“ ActionController

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

Twoje klasy kontrolerรณw dziedziczฤ… po Kontroler aplikacji, ktรณry zawiera kod, ktรณry moลผna uruchomiฤ‡ we wszystkich innych kontrolerach i ktรณry z kolei dziedziczy po Kontroler akcji::Baza.

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, a takลผe zarzฤ…dza sesjami uลผytkownikรณw, zapewniajฤ…c im pล‚ynne dziaล‚anie.

Szyny โ€“ konfiguracje

Moลผesz skonfigurowaฤ‡ komponenty, takie jak inicjatory, zasoby, generatory i oprogramowanie poล›redniczฤ…ce, korzystajฤ…c z inicjatorรณw aplikacji Rails i plikรณw konfiguracyjnych w config katalog. Pliki takie jak konfiguracja/aplikacja.rb, konfiguracja/ล›rodowiska/rozwรณj.rb, konfiguracja/ล›rodowiska/test.rb Tutaj sฤ… uลผywane. Moลผesz rรณwnieลผ dodaฤ‡ niestandardowe ustawienia dla swojej aplikacji.

Railsy โ€“ debugowanie

Podczas tworzenia aplikacji bฤ™dziesz musiaล‚ debugowaฤ‡ kod. Rails uล‚atwia to dziฤ™ki paaa klejnot. Moลผesz rozpoczฤ…ฤ‡ sesjฤ™ debugowania, umieszczajฤ…c sล‚owo kluczowe paaa w dowolnym miejscu kodu aplikacji.

To tymczasowo zatrzymuje wykonywanie w tym momencie. Gem byebug oferuje kilka poleceล„. Najbardziej przydatne to:

  • dalej: przechodzi do nastฤ™pnej linii kodu, pomijaping wszystkie metody wywoล‚ywane przez bieลผฤ…cy wiersz.
  • krok: podobnego do Nastฤ™pny, ale przechodzi do kaลผdej wywoล‚ywanej metody.
  • przerwa: zatrzymuje wykonywanie kodu.
  • dalej: kontynuuje wykonywanie kodu.

Dostฤ™pne sฤ… rรณwnieลผ inne narzฤ™dzia do debugowania, takie jak: Wtrฤ…caฤ‡ siฤ™Wszystkie oferujฤ… podobnฤ… funkcjonalnoล›ฤ‡, ale rรณลผniฤ… siฤ™ nieco skล‚adniฤ…. Nie naleลผy uลผywaฤ‡ gemรณw debugowania w ล›rodowisku produkcyjnym, poniewaลผ stanowiฤ… one zagroลผenie dla aplikacji i negatywnie wpล‚ywajฤ… na komfort uลผytkowania.

Pliki dziennika moลผna sprawdzaฤ‡ pod kฤ…tem bล‚ฤ™dรณw w ล›rodowisku produkcyjnym i odpowiednio je obsล‚ugiwaฤ‡. Podczas tworzenia aplikacji naleลผy rรณwnieลผ stosowaฤ‡ podejล›cie TDD (Test-Driven Development), aby upewniฤ‡ siฤ™, ลผe wszystko dziaล‚a poprawnie przed wdroลผeniem w ล›rodowisku produkcyjnym.

FAQ

Tak. Rails nadal obsล‚uguje GitHub, Shopify i Basecamp, a wersja 7 dodaล‚a Hotwire, import map i wbudowanฤ… obsล‚ugฤ™ edytora Trix. Nadal jest to dobry wybรณr dla zespoล‚รณw, ktรณre potrzebujฤ… szybkich iteracji z wykorzystaniem sprawdzonych w boju konwencji.

Rails uลผywa Ruby, Django zastosowania PythonOba to frameworki MVC typu full-stack z solidnymi ORM-ami. Rails opiera siฤ™ na konwencjach i generatorach kodu, podczas gdy Django oferuje interfejs administracyjny i bardziej rygorystycznฤ… konfiguracjฤ™, ktรณrฤ… wiele zespoล‚รณw preferuje w projektach z duลผฤ… iloล›ciฤ… danych.

Typowe ล›cieลผki wdraลผania obejmujฤ…: Heroku, Render, Fly.io i AWS za poล›rednictwem Capistrano lub Dockera. Wiฤ™kszoล›ฤ‡ zespoล‚รณw prekompiluje zasoby za pomocฤ… rake assets:precompile, ustawia RAILS_ENV=production, uruchamia rails db:migrate i obsล‚uguje aplikacjฤ™ za pomocฤ… Puma plus Nginx lub zarzฤ…dzanego moduล‚u rรณwnowaลผenia obciฤ…ลผenia.

Tak. Asystenci AI mogฤ… tworzyฤ‡ szkielety modeli, sugerowaฤ‡ zapytania ActiveRecord, tworzyฤ‡ wersje robocze testรณw RSpec i sprawdzaฤ‡ migracje. Zawsze sprawdzaj wygenerowany kod pod kฤ…tem konwencji Rails i wytycznych bezpieczeล„stwa przed zatwierdzeniem, szczegรณlnie w przypadku zmian uwierzytelniania i baz danych.

Aplikacje Rails zazwyczaj wywoล‚ujฤ… dostawcรณw AI za poล›rednictwem pakietรณw SDK Ruby lub klientรณw HTTP, takich jak Faraday, przechowujฤ… monity i odpowiedzi w modelach ActiveRecord oraz kolejkujฤ… dล‚ugie zadania za pomocฤ… Sidekiq. Takie pereล‚ki jak ruby-openai i langchainrb uล‚atwiajฤ… podล‚ฤ…czanie nowoczesnych funkcji AI.

Podsumuj ten post nastฤ™pujฤ…co: