Skocz do zawartości

Witaj na forum webmasterów Webax.pl.

Wyświetl nową zawartość

Ruby on Rails - alternatywa PHP - część trzecia - projekt, katalogi oraz serwer


  • Zaloguj się, aby dodać odpowiedź
7 odpowiedzi w tym temacie
Soanvig
Soanvig

    Początkujący

  • Użytkownik
  • PipPipPip
  • 114 postów
#1

Napisano 25 sierpień 2012 - 10:46

MVC

MVC to wzór projektowania aplikacji (wszelakich, nie tylko dla WWW) oparty na następujących 3 elementach:

M - Model - odbieranie danych od użytkownika, komunikacja z bazą danych (w tym to co związane z walidacją danych pochodzących od użytkownika).
V - Viewer - wyświetlanie informacji dla użytkownika. W przypadku WWW będzie to strona wynikowa, w przypadku programu: na przykład przycisk.
C - Controller - jak sama nazwa wskazuje jest to element kontrolujący. Co? Ano, wykonywanie całego skryptu. I w ten oto sposób, dla przykładu, Controller odbiera dane pobrane przez Model i przekazuje je do Viewera.

Jest to wzór ściśle związany z Ruby on Rails i nie można się od niego uwolnić.

Tworzenie projektu, budowa katalogu Rails i uruchamianie serwera Rails

Zaczynamy od uruchomienia linii poleceń/konsoli (w Windowsie należy wpisać polecenie: cmd w okienku Uruchom).
Wszystkie polecenia dla Rails wydajemy komendami: rails [polecenie] [argumenty dla polecenia]. Przykładowe polecenie wygląda następująco:
rails generate controller enterTo nasa pentagon whiteHouse
(proponuję go nie uruchamiać, gdyż wtedy wygenerujemy kod umożliwiający włamanie się do ww. i FBI mogą nas za to zamknąć).

Zacznijmy od utworzenia projektu. Ja swojemu projektowi dam nazwę soanvigIsAmazing.
Aby utworzyć projekt w Rails używamy polecenia new, a jako argument podajemy nazwę projektu.
Dam wam szansę na ułożenie tego polecenia samemu.
Tak więc teraz je układamy...
...
...
i porównujemy z moim: ściągawka

[tego typu ukrywanie kodu będę czynił prawie za każdym razem, abyście, co po niektórzy, nauczyli sami pracować]

Świetnie! Mamy utworzony projekt wraz ze wszystkimi koniecznymi plikami! Ale gdzie on jest na dysku? Ano, znajduje się w folderze o nazwie takiej, jaką nadaliście projektowi w poleceniu. A ten folder znajduje się w tym miejscu, gdzie akurat mieliśmy ustawioną konsolową ścieżkę, którą - jak już wspominałem - można zmienić za pomocą polecenia cd.

Skorzystajmy z tego polecenia! Przejdźmy do naszego projektu za pomocą komendy cd nazwaProjektu. W tym momencie ścieżka po lewej od linii poleceń powinna się zmienić. Jeżeli tak się stało, oznacza to, że dostaliśmy się do katalogu z naszym projektem. A co się w nim znajduje? Omówię jedynie te kompletnie podstawowe foldery i pliki:

- app
--- assets - folder z katalogami, do których wrzucamy wszystkie pliki *.js.coffee (pliki Javascript dla poszczególnych kontrolerów), *.css.scss (plki CSS dla poszczególnych kontrolerów) oraz obrazki jakich chcemy używać do np. budowania layoutu. Tak samo wrzucamy pliki *.js oraz *.css jednakże te nie są już przeznaczone dla konkretnych kontrolerów, ale są automatycznie kompilowane (dużo więcej o tym folderze i operowaniu na plikach w nim TUTAJ)
--- controllers - do tego folderu winny trafiać wszystkie kontrolery nazwaControllera_controller.rb
--- models - a tutaj wrzucamy modele: nazwaModelu.rb
--- views - folder z widokami
----- nazwaControllera
------- nazwaMetody.html.erb - widok wczytywany dla każdej metody w Controllerze
----- layouts
------- application.html - layout generalny dla każdego widoku. Znajdziemy tu między innymi sekcję <head> oraz polecenia wczytujące wszystkie pliki JS, CSS oraz kod yield wczytujący widok.

- public - wbrew pozorom, tego folderu nie używamy praktycznie w ogóle. Znajdują się tu pliki błędów, favicon i tym podobne. W tym tutorialu nam to nie będzie potrzebne.

- config - pliki konfiguracji, oraz najważniejszy z nich (jedyny używany w kursie): routes.rb. Ten plik służy do konfigurowania przekierowań. Więc o tym - później

Uff, nie wiem komu się to chciało czytać, ale warto mieć ogólne pojęcie o tej strukturze.

Zajmijmy się uruchomieniem serwera i ujrzeniem swojej pierwszej strony napisanej w Rails!

Klientem serwera domyślnie zawartym w Rails jest Mongrel. Na nasze "localhostowe" potrzeby wystarczy. W Rails uruchamiamy serwer dla poszczególnego projektu, tak więc projekty są całkowicie od siebie oddzielone.

Aby uruchomić serwer dla projektu soanvigIsAmazing należy najpierw przejść do głównego katalogu projektu. Jeżeli się w nim już znajdujemy, możemy odpalić polecenie server lub po prostu s: ściągawka.

UWAGA!
Generalnie w pewnym momencie może wystąpić błąd ExecJS. Podkreślam: może. Jeśli takowy wystąpi, pamiętajcie, że radą będzie oddzielne zainstalowanie nodejs. Na Ubuntu-like będzie to:
git clone git://github.com/joyent/node.gitcd node./configuremakesudo make install
Jeśli serwer się uruchomi, oznaką tego będzie zablokowanie wiersza konsoli (nie będziemy mogli wpisać żadnej komendy) + kilka logów. Serwer uruchamia się w procesie konsoli, więc nie możemy jej wyłączać, inaczej wyłączymy serwer.

Hello Rails!

Domyślnie wraz z projektem generuje się strona startowa. A nasz projekt będzie dostępny pod portem 3000 i adresem localhost. Czyli w przeglądarce musimy wklupać: localhost:3000

Witam na szynach :)
  • 1

[font="Courier;"].oooooooo8....ooooooo......o......oooo...oooo.888.........o888...888o...888......8888o..88...888oooooo..888.....888..8..88.....88.888o88..........888.888o...o888.8oooo88....88...8888..o88oooo888....88ooo88.o88o..o888o.o88o....88..[/font]


Thelleo
Thelleo

    Początkujący

  • Użytkownik
  • PipPipPip
  • 99 postów
#2

Napisano 25 sierpień 2012 - 11:19

No i kolejny plusik ;) Poradnik bardzo dobry i powoduje, że czeka się na więcej.
  • 0

Dołączona grafika


Comandeer
Comandeer

    Stały bywalec

  • Developer
  • 418 postów
#3

Napisano 25 sierpień 2012 - 14:26

Widzę pliki coffee - strzelam, że błąd z ExecJS występuje z powodu używania kompilatora CoffeeScript (dlatego potrzebna jest instalacja node.js). Nie rozumiem czemu RoR zdecydowało się na taki krok - może wiesz czemu nie operują na natywnym JS, a kompilują go z innego języka? I zmień adres dla node.js: aktualna wersja jest na http://github.com/joyent/node BTW zmobilizowałeś mnie do rozpoczęcia prac nad tym tutkiem dla node.js ;) w najbliższym czasie powinien się pojawić :D
  • 0

Moje tutoriale

Ad hominem attacks are valid arguments, and you are an idiot.


Soanvig
Soanvig

    Początkujący

  • Użytkownik
  • PipPipPip
  • 114 postów
#4

Napisano 25 sierpień 2012 - 14:40

Git zaktualizowany. I nie wiem czemu stosują Coffee. Nie śledzę tak dokładnie tematu.
  • 0

[font="Courier;"].oooooooo8....ooooooo......o......oooo...oooo.888.........o888...888o...888......8888o..88...888oooooo..888.....888..8..88.....88.888o88..........888.888o...o888.8oooo88....88...8888..o88oooo888....88ooo88.o88o..o888o.o88o....88..[/font]


graegkma
graegkma

    Użytkownik

  • Użytkownik
  • PipPip
  • 27 postów
#5

Napisano 29 grudzień 2012 - 20:15

graegkma@graegkma:~$ rails new projekt/home/graegkma/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- active_support (LoadError)from /home/graegkma/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'from /usr/lib/ruby/vendor_ruby/railties/lib/rails_generator.rb:30:in `<top (required)>'from /home/graegkma/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'from /home/graegkma/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'from /usr/lib/ruby/vendor_ruby/railties/bin/rails:16:in `<main>'
:/
  • 0

Soanvig
Soanvig

    Początkujący

  • Użytkownik
  • PipPipPip
  • 114 postów
#6

Napisano 31 grudzień 2012 - 00:19

Require jest popularnym problemem, ale to przy pisaniu skryptów w Ruby. W Railsie przy tworzeniu nie powinno być takiego erroru Sprawdź jak instalowałeś - czy tak jak pisałem w części wcześniejszej. Czy przez "gemy".
  • 0

[font="Courier;"].oooooooo8....ooooooo......o......oooo...oooo.888.........o888...888o...888......8888o..88...888oooooo..888.....888..8..88.....88.888o88..........888.888o...o888.8oooo88....88...8888..o88oooo888....88ooo88.o88o..o888o.o88o....88..[/font]


cap'n
cap'n

    Początkujący

  • Aktywny
  • 67 postów
#7

Napisano 31 grudzień 2012 - 10:47

gem list Generalnie tego błędu nie powinno być, musiało się coś źle zainstalować albo ktoś (ciekawe kto) namieszał ręcznie ;)
  • 0

Soanvig
Soanvig

    Początkujący

  • Użytkownik
  • PipPipPip
  • 114 postów
#8

Napisano 31 grudzień 2012 - 11:16

Przejrzałem SO. To musi być błąd związany ze złą instalacją :)
  • 1

[font="Courier;"].oooooooo8....ooooooo......o......oooo...oooo.888.........o888...888o...888......8888o..88...888oooooo..888.....888..8..88.....88.888o88..........888.888o...o888.8oooo88....88...8888..o88oooo888....88ooo88.o88o..o888o.o88o....88..[/font]