Darmowy fragment publikacji:
Tytuł oryginału: Learn Ruby On Rails For Web Development: Learn Rails The Fast And Easy Way!
Tłumaczenie: Grzegorz Mańturzyk
ISBN: 978-83-283-1843-4
Copyright © John Elder and Codemy.com.
Polish edition copyright © 2016 by Helion S.A.
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/rrtwww
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
• Kup książkę
• Poleć książkę
• Oceń książkę
• Księgarnia internetowa
• Lubię to! » Nasza społeczność
SPIS TRE(cid:165)CI
O AUTORZE ............................................................................................................................. 7
WPROWADZENIE .................................................................................................................. 9
Czym właściwie jest platforma Ruby on Rails? ........................................................................... 10
Dla kogo jest ta książka? ................................................................................................................ 10
Czy trzeba nauczyć się języka Ruby? ............................................................................................ 10
Co będziemy robić w tej książce? .................................................................................................. 11
Jak wygląda nauka? ......................................................................................................................... 11
Konwencje stosowane w tej książce ............................................................................................. 11
Rozdział 1.
ŚRODOWISKO PROGRAMISTYCZNE ............................................................................... 15
Z jakiej wersji Rails i Ruby korzystasz? ........................................................................................ 19
Popularne polecenia terminalowe ................................................................................................ 20
Utworzenie pierwszego projektu Rails ........................................................................................ 21
Uruchomienie aplikacji .................................................................................................................. 22
Architektura MVC .......................................................................................................................... 23
Pliki gemów ..................................................................................................................................... 25
Dodawanie stron do aplikacji WWW .......................................................................................... 27
Przekierowanie strony .................................................................................................................... 30
Kontrola wersji w systemach GitHub i Bitbucket ...................................................................... 32
Instalacja programu Git ...........................................................................................................33
Przywracanie kodu ...................................................................................................................35
GitHub czy Bitbucket? .............................................................................................................35
System Bitbucket .......................................................................................................................35
System GitHub ..........................................................................................................................38
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
Udostępnianie aplikacji za pomocą usługi Heroku ....................................................................40
Wysyłanie kodu do usługi Heroku .........................................................................................42
Następny krok — uzyskiwanie pomocy .......................................................................................44
Rozdział 2.
TWORZENIE PROSTEJ APLIKACJI .................................................................................... 47
Dodawanie nowych stron do aplikacji .........................................................................................47
Dodanie nowej strony do kontrolera ...........................................................................................49
Ustawienie ścieżki do nowej strony ..............................................................................................50
Tworzenie odnośników do stron ..................................................................................................51
Z tworzeniem odnośników na każdej stronie jest za dużo roboty ...........................................54
Tworzenie plików częściowych .....................................................................................................54
Pliki layouts/application.html.erb ................................................................................................55
Rozdział 3.
DODAWANIE KOMPONENTÓW BOOTSTRAP ............................................................... 59
Instalacja platformy Bootstrap ......................................................................................................60
Zabawa z platformą Bootstrap ......................................................................................................64
Utworzenie paska nawigacyjnego .................................................................................................68
Dostosowanie platformy Bootstrap ..............................................................................................70
Rozdział 4.
OBSŁUGA UŻYTKOWNIKÓW ZA POMOCĄ GEMA DEVISE ........................................ 75
Krok pierwszy ............................................................................................................................78
Krok trzeci .................................................................................................................................78
Krok piąty ..................................................................................................................................80
Obsługa bazy danych w platformie Rails .....................................................................................81
Baza programistyczna i baza produkcyjna ..................................................................................83
Wysyłanie migracji do bazy PostgreSQL w usłudze Heroku ....................................................84
Sprawdzenie nowych stron gema Devise .....................................................................................85
Zmiana wyglądu stron gema Devise .............................................................................................87
Tworzenie odnośników na stronach gema Devise .....................................................................91
Sprawdzenie, czy użytkownik jest zalogowany ...........................................................................92
Zmiana paska nawigacyjnego ........................................................................................................93
Rozdział 5.
TWORZENIE SZKIELETU APLIKACJI ............................................................................... 95
Sprawdzenie widoków szkieletu ....................................................................................................97
To jest CRUD! .................................................................................................................................99
Widoki i kontroler szkieletu ........................................................................................................100
4
Poleć książkęKup książkęSPIS TRE(cid:165)CI
Tabela utworzona w bazie danych ..............................................................................................102
Sprawdzenie strony z listą pinów ...............................................................................................104
Zmiana paska nawigacyjnego ......................................................................................................105
Rozdział 6.
UWIERZYTELNIANIE UŻYTKOWNIKÓW ..................................................................... 107
Powiązania w platformie Rails ....................................................................................................107
Stosowanie powiązań ...................................................................................................................108
Tworzenie powiązań .....................................................................................................................109
Aby utworzyć pin, trzeba się zalogować ....................................................................................110
Podsumowanie ..............................................................................................................................115
Rozdział 7.
ŁADOWANIE OBRAZÓW ZA POMOCĄ GEMA PAPERCLIP ....................................... 117
Instalacja narzędzia ImageMagick .............................................................................................118
Instalacja gema paperclip .............................................................................................................119
Zmiana strony umożliwiająca ładowanie obrazów ..................................................................120
Zapisywanie obrazów w usłudze Amazon S3 ...........................................................................124
Uzyskiwanie identyfikatora klucza dostępu i klucza poufnego w usłudze Amazon ...........128
Rozdział 8.
STYLIZACJA WITRYNY ZA POMOCĄ JQUERY MASONRY I PAGINACJI STRON ... 131
Ulepszenie strony wyświetlającej pin .........................................................................................138
Przystosowanie strony do urządzeń mobilnych .......................................................................139
Zmiana kolejności pinów .............................................................................................................141
Dodanie paginacji stron ...............................................................................................................142
Ustawienie listy pinów jako strony głównej ..............................................................................145
Dodanie nazwy użytkownika ......................................................................................................146
Rozdział 9.
UPIĘKSZANIE WITRYNY I ZAKOŃCZENIE PROJEKTU .............................................. 151
Definiowanie własnego adresu URL ..........................................................................................153
Poddomeny ....................................................................................................................................153
Tworzenie własnej domeny .........................................................................................................154
Rozdział 10.
PODSUMOWANIE .............................................................................................................. 155
SKOROWIDZ ....................................................................................................................... 157
5
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
6
Poleć książkęKup książkęRozdzia(cid:239) 4.
OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW
ZA POMOC(cid:107) GEMA DEVISE
Twoja aplikacja się rozwija! Teraz, gdy poznałeś komponenty Bootstrap, możesz zacząć
upiększać witrynę. Ale tak naprawdę… to aplikacja wciąż nic nie robi.
Czas to zmienić.
Jedną z kluczowych funkcjonalności aplikacji będzie możliwość tworzenia kont przez
użytkowników, logowania, wylogowywania się i zmieniania profili.
Nie chcesz przecież, aby „piny” na Twojej stronie umieszczał przypadkowy użytkownik.
W tym celu musi najpierw założyć konto i się zalogować.
Kiedyś napisanie kodu realizującego tę funkcjonalność przyprawiało o ból głowy i zabie-
rało mnóstwo czasu. W dużej mierze wymagało to zaimplementowania obsługi baz danych,
czego nienawidzę!
Na szczęście teraz jest Ruby on Rails, a do tego gem, który wykona za Ciebie całą mrówczą
robotę. Gem nazywa się Devise.
Jest to gem do uwierzytelniania użytkownika. Za jego pomocą można łatwo rejestrować
użytkowników, umożliwiać im logowanie i wylogowywanie ze strony, jak również modyfi-
kowanie swoich profili. Za pomocą tego gema tworzy się również formularze niezbędne do
wykonania powyższych operacji, a dodatkowo realizuje całą skomplikowaną obsługę bazy
danych.
Wystarczy jedynie zainstalować i skonfigurować gem i wszystko będzie od razu działać.
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
Otwórz stronę RubyGems.org i wyszukaj gem Devise. W chwili powstawania tej książki zo-
stał on już pobrany i zainstalowany ponad 12 milionów razy. Jak widać, jest to popularny
komponent (jakżeby mogło być inaczej — spróbuj wyobrazić sobie stronę WWW, która
nie wymagałaby logowania i wylogowywania użytkowników!).
W chwili pisania tej książki dostępna była wersja 3.5.2 gema, którą należy dodać do pliku
Gemfile w następujący sposób:
/Gemfile
1 source https://rubygems.org
2 gem rails , 4.2.1
3 gem sass-rails , ~ 5.0
4 gem uglifier , = 1.3.0
5 gem coffee-rails , ~ 4.1.0
6 gem jquery-rails
7 gem turbolinks
8 gem jbuilder , ~ 2.0
9 gem sdoc , ~ 0.4.0 , group: :doc
10 gem bootstrap-sass , ~ 3.3.5.1
11 gem devise , ~ 3.5.2
12
13 group :development, :test do
14 gem byebug
15 gem web-console , ~ 2.0
16 gem spring
17 end
18
19 group :development, :test do
20 gem sqlite3
21 end
22
23 group :production do
24 gem pg , 0.18.2
25 gem rails_12factor , 0.0.3
26 end
Jak zawsze, po dodaniu nowego gema do pliku Gemfile trzeba użyć polecenia bundle install:
1 $ bundle install
2
Oczywiście gem Devise wykonuje mnóstwo roboty, więc nie bądź zaskoczony, że jego in-
stalacja i konfiguracja składa się z większej liczby kroków niż w przypadku innych gemów.
Opisane są one w dokumentacji na stronie RubyGems.org, ale przeprowadzę Cię teraz
przez wszystkie etapy.
76
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
Najpierw musisz uruchomić generator:
1 $ rails generate devise:install
2
W oknie terminala pojawi się sporo tekstu. Jeżeli się mu przyjrzysz, zauważysz, że zawiera
opis pięciu kroków, które musisz wykonać, aby zainstalować gem Devise. Nie obawiaj się,
nie jest tak źle. Zrobimy to teraz.
Poniżej znajdują się instrukcje wzięte wprost z tekstu wyświetlonego w terminalu:
1. Sprawdź, czy zdefiniowałeś domyślne opcje adresu URL w plikach konfiguracyjnych.
Poniżej przedstawiona jest przykładowa opcja środowiska programistycznego
default_url_options w pliku config/environments/development.rb:
config.action_mailer.default_url_options = { host: localhost , port: 3000 }
W środowisku produkcyjnym opcja host: musi wskazywać serwer Twojej
aplikacji.
2. Sprawdź, czy w pliku config/routes.rb ustawiony jest adres URL strony głównej,
na przykład: root to: home#index .
3. Sprawdź, czy w pliku app/views/layouts/application.html.erb zdefiniowane są
komunikaty flash, na przykład:
p class= notice = notice /p
p class= alert = alert /p
4. Jeżeli udostępniasz aplikację w usłudze Heroku tylko z wersją Rails 3.2,
musisz ustawić opcję:
config.assets.initialize_on_precompile = false
5. Skopiuj widoki gema Devise do swojej aplikacji (w celu ich dostosowania)
za pomocą polecenia:
rails g devise:views
Przyjrzyj się powyższym krokom. Od razu możesz pominąć krok czwarty, ponieważ nie
korzystasz z wersji Rails 3.2, tylko z 4.2.1 lub nowszej.
Możesz również pominąć krok drugi, ponieważ zdefiniowałeś już główną stronę index.
Pozostały więc kroki 1., 3. i 5. Wykonaj je teraz.
77
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
KROK PIERWSZY
Przyjrzyj się krokowi pierwszemu. Musisz w dwóch plikach dodać po jednym wierszu kodu.
/config/environments/development.rb:
1 .
2 .
3 config.action_mailer.default_url_options = { host: localhost , port: 3000 }
4 end
5
Wpisz po prostu wiersz numer 3 na końcu wskazanego pliku (powyżej końcowego wiersza
end, który jest tu pokazany).
Następnie podobną zmianę wprowadź w innym pliku:
/config/environments/production.rb:
1 .
2 .
3 config.action_mailer.default_url_options = { host: obrazkowo.herokuapp.com }
4 end
5
Przyjrzyj się 3. wierszowi. Jest on bardzo podobny do 3. wiersza z poprzedniego listingu,
ale zamiast opcji host: localhost , port: 3000 zawiera rzeczywisty adres URL aplikacji
w usłudze Heroku. W tym miejscu wpisz adres, który nadałeś swojej aplikacji.
O co tu chodzi? Otóż te dwa pliki zawierają ustawienia środowiska programistycznego
i produkcyjnego. Wskazałeś w nich, aby aplikacja w lokalnym środowisku programistycz-
nym wykorzystywała serwer WEBrick, a w produkcyjnym — usługę Heroku.
KROK TRZECI
Teraz przyjrzyj się krokowi trzeciemu.
W tym kroku musisz wpisać nieco kodu obsługującego komunikaty flash. Są to niewielkie
automatyczne podpowiedzi pojawiające się na stronie, gdy użytkownik wykona jakąś operację.
Na przykład gdy użytkownik się zaloguje, wtedy u góry strony pojawi się komunikat flash
typu „Pomyślnie zalogowałeś się do serwisu”. Po wylogowaniu pojawi się inny komunikat:
„Pomyślnie wylogowałeś się z serwisu” itd.
Gem Devise wyświetla powyższe komunikaty automatycznie, ale musisz wpisać trochę kodu,
aby wskazać gemowi miejsce na stronie, w którym komunikaty mają się pojawiać.
78
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
Instrukcja zawiera proponowany kod, który trzeba umieścić w pliku strony:
1 p class= notice = notice /p
2 p class= alert = alert /p
3
Trzeba go jednak nieco zmodyfikować i zmienić wygląd tych komunikatów za pomocą
platformy Bootstrap. W tym celu otwórz stronę http://getbootstrap.com/, kliknij odnośnik
Components, przewiń zawartość strony i kliknij odnośnik Alerts (alerty).
Komunikat flash jest w rzeczywistości alertem, więc użyj klasy alert platformy Bootstrap.
Zauważ, że dostępne są cztery kolory alertów: zielony (success, czyli powodzenie), niebieski
(info, informacja), żółty (warning, ostrzeżenie) i czerwony (danger, niebezpieczeństwo).
Użyj niebieskiego komunikatu.
Gdzie trzeba umieścić kod, aby gem Devise mógł wykorzystać komunikaty flash? Muszą
one pojawiać się na każdej stronie Twojej witryny, więc odpowiednim miejscem umieszczenia
kodu będzie wiersz w pliku /app/views/layouts/application.html.erb, tuż powyżej znacznika
= yield i poniżej początku sekcji div:
/app/views/layouts/application.html.erb
1 .
2 .
3 div class= container
4 flash.each do |name, msg|
5 = content_tag(:div, msg, class: alert alert-info )
6 end
7 = yield
8 /div
9 .
10
Przyjrzyj się powyższemu kodowi, ponieważ wygląda nieco inaczej niż zalecany w instrukcji
do gema Devise.
Kod zawiera typową pętlę języka Ruby, która mówi: „Z każdym komunikatem flash zrób to
i to”. W tym przypadku „to i to” oznacza umieszczenie komunikatu w sekcji div z przypi-
saną klasą alert alert-info.
Skąd wzięła się klasa alert alert-info? Skopiowałeś ją ze strony GetBootStrap.com z frag-
mentu kodu w sekcji Alerts. Ten komunikat będzie niebieski.
Zwróć również uwagę, że znacznik otwierający w 1. wierszu flash.each do |name, msg|
nie zawiera znaku równości (zawiera go wiersz 5., ale nie 4.)!
79
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
Co to oznacza? Do tej pory wszystkie osadzone obiekty Ruby zawierały znacznik otwiera-
jący =. Znak równości oznacza „wyświetl tę treść na ekranie”. Jednak nie chcemy, aby
pętla wyświetlała cokolwiek na ekranie. Treść ma się pojawiać tylko wtedy, gdy warunek
wewnątrz pętli będzie spełniony. W wierszu 5. znajduje się znacznik =, ponieważ jego
zawartość ma być wyświetlana na ekranie.
KROK PI(cid:107)TY
Ostatnią czynnością do wykonania jest wpisanie w terminalu polecenia podanego w in-
strukcji. Zrób to więc teraz:
1 $ rails g devise:views
2
Polecenie to uruchamia generator widoków gema Devise. Zwróć uwagę, że wcześniej uży-
wałeś już polecenia generate, na przykład:
1 $ rails generate devise:views
2
Pojedyncza litera g zamiast generate jest skrótem, który można bez przeszkód stosować.
Po wykonaniu powyższego polecenia sprawdź zawartość katalogu /app/views/. Powinien
pojawić się w nim nowy katalog devise. Zawiera on kilka innych katalogów ze wszystkimi
stronami, które gem Devise utworzył na potrzeby obsługi takich operacji jak logowanie
i wylogowywanie użytkowników, zmiana profilu, resetowanie hasła itp. Sprawdź to!
Również w terminalu powinno pojawić się sporo tekstu. Jest to lista stron utworzonych
przez gem Devise. Przejrzyj tę listę. Czy widzisz w niej nazwy stron? Przyjrzyj się na przykład
plikowi /app/views/devise/registrations/new.html.erb.
Zapewne się domyślasz, że jest to strona umożliwiająca użytkownikowi zarejestrowanie się
w Twojej aplikacji (tworząca „nową” rejestrację). Otwórz ten plik w edytorze. Na samym
początku zobaczysz tytuł Sign Up (zarejestruj się). Usuń te słowa i w ich miejsce wpisz
Rejestracja.
Uwaga! Gem Devise domyślnie tworzy strony z napisami w języku angielskim.
Aby na stronach pojawiały się polskie napisy, należy zmienić pliki utworzone
przez gem. Szczegółowe informacje, jak to zrobić, zawarte są w dodatku, który
możesz pobrać pod adresem ftp://ftp.helion.pl/przyklady/rrtwww.zip.
80
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
A co to jest za plik app/views/devise/sessions/new.html.erb? Jest to strona do logowania
użytkowników. Gdy użytkownik się zaloguje, tworzona jest sesja. Operacja logowania po-
lega na tworzeniu nowej sesji.
Analogicznie wylogowanie oznacza zamknięcie sesji.
Gem Devise utworzył naprawdę dużo plików i prawdę mówiąc, z większości z nich nie bę-
dziesz korzystał. Nie czuj się więc przytłoczony.
Instalacja gema jest prawie zakończona, pozostała jeszcze jedna czynność do wykonania.
Gem został skonfigurowany, widoki utworzone, ale nie ma połączenia z bazą danych,
w której będą przechowywane informacje o użytkownikach. Na szczęście nie jest to pro-
blem, wystarczy wpisać poniższe dwa polecenia:
1 $ rails generate devise user
2 $ rake db:migrate
3
OBS(cid:146)UGA BAZY DANYCH W PLATFORMIE RAILS
Tak naprawdę to nie pisałem jeszcze o bazach danych, więc zrobię to teraz. Dzięki plat-
formie Rails praca z bazami jest wyjątkowo prosta, ale trzeba wiedzieć, co się z nimi dzieje.
Za każdym razem gdy będziesz chciał coś zrobić z bazą danych za pomocą platformy Rails,
będziesz musiał utworzyć tzw. migrację i wysłać ją do bazy. Migrację możesz traktować jak
listę rzeczy do zrobienia. Utwórz listę, a następnie przekaż ją do bazy danych.
Przed chwilą, wpisując polecenie rails generate devise user, utworzyłeś migrację i „do-
dałeś” użytkowników. Możesz nawet zobaczyć zawartość pliku z migracją. Pliki z migra-
cjami znajdują się w katalogu /db/migrate.
W moim przypadku polecenie rails generate devise user utworzyło następujący plik
z migracją:
/db/migrate/20150824184627_devise_create_users
1 class DeviseCreateUsers ActiveRecord::Migration
2 def change
3 create_table(:users) do |t|
4 ## Database authenticatable
5 t.string :email, null: false, default:
6 t.string :encrypted_password, null: false, default:
7
8 ## Recoverable
9 t.string :reset_password_token
81
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
10 t.datetime :reset_password_sent_at
11
12 ## Rememberable
13 t.datetime :remember_created_at
14
15 ## Trackable
16 t.integer :sign_in_count, default: 0, null: false
17 t.datetime :current_sign_in_at
18 t.datetime :last_sign_in_at
19 t.string :current_sign_in_ip
20 t.string :last_sign_in_ip
21
22 ## Confirmable
23 # t.string :confirmation_token
24 # t.datetime :confirmed_at
25 # t.datetime :confirmation_sent_at
26 # t.string :unconfirmed_email # Only if using reconfirmable
27
28 ## Lockable
29 # t.integer :failed_attempts, default: 0, null: false # Only if lock
(cid:180)strategy is :failed_attempts
30 # t.string :unlock_token # Only if unlock strategy is :email or :both
31 # t.datetime :locked_at
32
33 t.timestamps null: false
34 end
35
36 add_index :users, :email, unique: true
37 add_index :users, :reset_password_token, unique: true
38 # add_index :users, :confirmation_token, unique: true
39 # add_index :users, :unlock_token, unique: true
40 end
41 end
Jest tu sporo kodu, ale tak naprawdę nie musisz wiedzieć, co on realizuje. Przejrzyj go po-
bieżnie i sprawdź, czy coś Ci się nie rzuciło w oczy.
Zwróć uwagę, że kod zawiera odwołanie do adresu e-mail i hasła (ponieważ użytkownicy
będą logowali się za pomocą tych danych). Rejestruje również czas zalogowania się użyt-
kownika (wiersz 17.) i resetuje hasło (wiersz 38.).
Jak wcześniej wspomniałem, w tej chwili (a nawet w ogóle) nie musisz wiedzieć, co oznacza
każdy wiersz powyższego kodu. Pamiętaj tylko, że utworzyłeś migrację.
Do wysłania migracji do bazy danych służy polecenie rake db:migrate.
82
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
BAZA PROGRAMISTYCZNA I BAZA PRODUKCYJNA
Zanim przejdziemy dalej, muszę nieco powiedzieć o bazach danych (ponieważ już ich
używasz). Pierwszy raz wspomniałem o nich przy okazji omawiania usługi Heroku i teraz
chciałbym wrócić do tego tematu.
W środowisku programistycznym wykorzystywana jest baza danych o nazwie sqlite3, bardzo
prosta, instalowana razem z platformą Rails. Gdy przyjrzysz się plikowi Gemfile, znajdziesz
w nim referencję do tej bazy.
Jak wspomniałem wcześniej, sqlite3 nie nadaje się do obsługi produkcyjnej witryny. Do tego
celu trzeba użyć innej bazy.
Użyjesz bazy PostgreSQL. Dlaczego właśnie tej? Ponieważ usługa Heroku lubi tę bazę, która
w dodatku jest bardzo prosta w obsłudze. Jedyną operacją, którą trzeba wykonać, jest
dodanie gema postgres (co zrobiłeś już wcześniej). Jak pamiętasz, była to czynność nieco
bardziej złożona niż dodanie zwykłego gema, ponieważ trzeba było wskazać, że aplikacja
w środowisku programistycznym powinna wykorzystywać bazę sqlite3, a w produkcyjnym
— PostgreSQL. Ale i tak było to dość proste.
Oto co wtedy zrobiłeś:
/Gemfile
1 source https://rubygems.org
2 gem rails , 4.2.1
3 gem sass-rails , ~ 5.0
4 gem uglifier , = 1.3.0
5 gem coffee-rails , ~ 4.1.0
6 gem jquery-rails
7 gem turbolinks
8 gem jbuilder , ~ 2.0
9 gem sdoc , ~ 0.4.0 , group: :doc
10 gem bootstrap-sass , ~ 3.3.5.1
11 gem devise , ~ 3.5.2
12
13 group :development, :test do
14 gem byebug
15 gem web-console , ~ 2.0
16 gem spring
17 end
18
19 group :development, :test do
20 gem sqlite3
21 end
22
23 group :production do
83
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
24 gem pg , 0.18.2
25 gem rails_12factor , 0.0.3
26 end
27
W powyższym pliku wprowadziłeś dwie zmiany. Przede wszystkim usunąłeś oryginalne
odwołanie do gema sqlite3, umieszczone w chwili utworzenia projektu. Odwołanie to jest
jednak potrzebne, więc umieściłeś je w grupie odwołań w wierszu 19.
Grupa ta zawiera informację, że Twoja aplikacja będzie korzystać z bazy sqlite3 w środowisku
programistycznym i testowym (pamiętaj, że książka nie zawiera opisu żadnych operacji
wykonywanych w środowisku testowym).
Dodatkowo umieściłeś odwołania do gemów baz danych pg i rails_12factor (baza wyma-
gana w usłudze Heroku), które będą wykorzystywane w środowisku produkcyjnym.
Za każdym razem, gdy dodasz gem do pliku Gemfile, musisz użyć polecenia bundle install,
jednak tym razem będzie nieco inaczej. To polecenie nie może obejmować opcji środowi-
ska produkcyjnego. To logiczne, ponieważ w środowisku programistycznym nie powinna
być instalowana baza PostgreSQL. Poniżej przedstawione jest odpowiednie polecenie:
1 $ bundle install --without production
2
Uwaga! Przed słowem without znajdują się dwa myślniki --.
Powyższe polecenie trzeba wprowadzić tylko raz. Platforma Rails będzie od tej chwili pa-
miętać, aby nie instalować gemów przeznaczonych dla środowiska produkcyjnego.
Dlaczego znów o tym piszę? Ponieważ chcę mieć pewność, iż wiesz, że będziesz korzystał
z dwóch różnych baz danych. Musisz o tym koniecznie pamiętać. Dlaczego? Ponieważ za
każdym razem po utworzeniu migracji trzeba ją wysyłać do lokalnej, a nie do produkcyjnej
bazy danych. Natomiast w usłudze Heroku trzeba migrację wysłać do bazy produkcyjnej
(w tym przypadku PostgreSQL).
WYSY(cid:146)ANIE MIGRACJI DO BAZY POSTGRESQL
W US(cid:146)UDZE HEROKU
Gdy użyłeś polecenia rails generate devise user, utworzyłeś migrację z obsługą użyt-
kowników. Następnie za pomocą polecenia rake db:migrate wysłałeś migrację do bazy
danych, konkretnie do bazy sqlite3.
84
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
Nie wysłałeś migracji do bazy PostgreSQL w usłudze Heroku, ale musisz to zrobić. Za każ-
dym razem gdy będziesz wysyłał migrację do lokalnej bazy danych w środowisku progra-
mistycznym (sqlite3), będziesz musiał również wysyłać ją do bazy w środowisku produk-
cyjnym (PostgreSQL). Służy do tego następujące polecenie:
1 $ heroku run rake db:migrate
2
Polecenie wygląda niemal identycznie jak rake db:migrate użyte lokalnie, zawiera jedynie
na początku słowa heroku run. Pamiętaj, że jeżeli nie użyjesz tego polecenia, baza danych
w usłudze Heroku nie będzie działała prawidłowo.
SPRAWDZENIE NOWYCH STRON GEMA DEVISE
Idźmy dalej! Zakończyłeś instalację gema Devise, wysłałeś migrację do bazy, dzięki czemu gem
może obsługiwać użytkowników zarówno w środowisku programistycznym, jak i produk-
cyjnym, oraz utworzyłeś strony umożliwiające użytkownikom logowanie i wylogowywanie
z aplikacji.
Czas więc zobaczyć te strony!
Przede wszystkim zatrzymaj i ponownie uruchom serwer.
Następnie aby sprawdzić, gdzie te strony się znajdują, odszukaj ścieżki utworzone przez
gem Devise. W tym celu użyj znanego Ci już polecenia rake routes:
1 $ rake routes
2
Jak pamiętasz, gdy poprzednim razem użyłeś tego polecenia, w aplikacji istniały tylko dwie
ścieżki (do stron index i O mnie). Tym razem jest ich o wiele więcej!
1 $ rake routes
2 Prefix Verb URI Pattern Controller#Action
3 new_user_session GET /users/sign_in(.:format) devise/sessions#new
4 user_session POST /users/sign_in(.:format) devise/sessions#create
5 .
6 .
Jak poprzednio, pierwsza kolumna zawiera ścieżkę. W drugiej znajduje się informacja,
czy jest to zwykła strona (komenda GET), czy formularz (POST), czy strona do wylogowania
użytkownika (DELETE). W trzeciej kolumnie znajduje się adres URL, którego użyjesz do wy-
świetlenia żądanej strony w przeglądarce. Piąta kolumna zawiera opis operacji kontrolera.
85
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
Powyżej nie jest przedstawiona pełna lista ścieżek, tylko jej początek, ale możesz wprowadzić
powyższe polecenie i zobaczyć pełną listę.
Pamiętaj, że ścieżki zawierające komendę GET oznaczają zwykłe strony WWW. Wybierz
zatem jedną z nich, wpisz adres w przeglądarce i zobacz, jak strona wygląda!
Wpisz następujący adres: https://obrazkowo-programista.c9.io/users/sign_up (lub inny
własny adres URL).
(Strona gema Devise do rejestrowania użytkowników https://obrazkowo-programista.c9.io/users/sign_up)
Sprawdź również stronę logowania — https://obrazkowo-programista.c9.io/users/sign_in
(lub inny własny adres URL):
(Strona gema Devise do logowania użytkowników https://obrazkowo-programista.c9.io/users/sign_in)
86
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
Na tej stronie znajduje się odnośnik dla użytkownika, którzy zapomniał, jak brzmi jego
hasło, i musi je zresetować. Tę stronę też możesz sprawdzić.
Utworzone strony i formularze są bardzo funkcjonalne. Za ich pomocą użytkownik może
założyć konto, zalogować się itd. Oczywiście strony te na razie wyglądają dość skromnie,
ale sama funkcjonalność działa prawidłowo. Teraz nadasz stronom elegancki wygląd.
ZMIANA WYGL(cid:107)DU STRON GEMA DEVISE
Teraz zajmij się poprawieniem wyglądu stron. To całkiem proste. Wszystkie pliki, które
trzeba zmienić, znajdują się w katalogu /app/views/devise. Zacznij od strony służącej do
rejestrowania użytkownika:
/app/views/devise/registrations/new.html.erb
1 h2 Rejestracja /h2
2
3 = form_for(resource, as: resource_name, url: registration_path(resource_name))
(cid:180)do |f|
4 = devise_error_messages!
5
6 div class= field
7 = f.label :email br /
8 = f.email_field :email, autofocus: true
9 /div
10
11 div class= field
12 = f.label :has(cid:239)o
13 if @minimum_password_length
14 em (minimum = @minimum_password_length znaków) /em
15 end br /
16 = f.password_field :password, autocomplete: off
17 /div
18
19 div class= field
20 = f.label :potwierd(cid:283)_has(cid:239)o br /
21 = f.password_field :password_confirmation, autocomplete: off
22 /div
23
24 div class= actions
25 = f.submit Wy(cid:258)lij
26 /div
27 end
28
29 = render devise/shared/links
30
87
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
Ten plik może wyglądać na najbardziej skomplikowany z tych, jakie do tej pory widziałeś,
ale nie jest tak źle. Aby zmienić wygląd strony gema Devise, użyjesz oczywiście platformy
Bootstrap!
Otwórz stronę GetBootstrap.com i kliknij odnośnik CSS u góry ekranu. Następnie kliknij
Forms (formularze) po prawej stronie. Teraz musisz zrobić kilka rzeczy. Nie będziesz ko-
piował i wklejał całego kodu widocznego pod przykładowym formularzem. Zamiast tego
wybierzesz tylko jego dwa fragmenty.
Po pierwsze, platforma Bootstrap wymaga, aby każde pole i etykieta formularza były umiesz-
czone w sekcji div z klasą form-group:
1 div class= form-group
2 .
3 .
4 /div
W pliku new.html.erb elementy te już są umieszczone w sekcji div, ale jej klasa nosi nazwę
field. Możesz to sprawdzić w wierszach 6., 11. i 19. na powyższym listingu.
To żaden problem. Po prostu w wierszach 6., 11. i 19. zmień słowo field na form-group.
Po drugie, każdemu polu formularza trzeba przypisać klasę form-control (pole formularza
to miejsce, w którym wpisuje się dane). W pliku new.html.erb pola te są umieszczone
w wierszach 8., 16. i 21.:
7
8 = f.email_field :email, autofocus: true, class: form-control
9
15
16 = f.password_field :password, autocomplete: off , class: form-control
17
20
21 = f.password_field :password_confirmation, autocomplete: off ,
(cid:180)class: form-control
22
Po trzecie, zwróć uwagę, że formularz wymaga, aby użytkownik wpisał hasło, a następnie
je potwierdził. Według mnie nie ma potrzeby, aby w tak prostej aplikacji użytkownik dwu-
krotnie wpisywał hasło, więc można się pozbyć dodatkowego pola. Wystarczy w tym celu
usunąć wiersze od 19. do 22.
Po czwarte, co zrobić z przyciskiem Wyślij? Wygląda dość ubogo… Można tu użyć komponentu
button platformy Bootstrap w taki sam sposób jak na stronie index. Wpisz następujący kod:
88
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
19
20 = f.submit Wy(cid:258)lij , class: btn btn-primary
21
Zmieniony plik wygląda teraz tak:
/app/views/devise/registrations/new.html.erb
1 h2 Rejestracja /h2
2
3 = form_for(resource, as: resource_name, url: registration_path(resource_name))
(cid:180)do |f|
4 = devise_error_messages!
5
6 div class= form-group
7 = f.label :email br /
8 = f.email_field :email, autofocus: true, class: form-control
9 /div
10
11 div class= form-group
12 = f.label :has(cid:239)o
13 if @minimum_password_length
14 em (minimum = @minimum_password_length znaków) /em
15 end br /
16 = f.password_field :password, autocomplete: off , class: form-control
17 /div
18
19 div class= actions
20 = f.submit Wy(cid:258)lij , class: btn btn-primary
21 /div
22 end
23
24 = render devise/shared/links
25
(Strona gema Devise do rejestrowania użytkowników https://obrazkowo-programista.c9.io/users/sign_up)
89
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
Teraz strona wygląda zdecydowanie lepiej, ale dodając panele, możesz nadać jej jeszcze
lepszy wygląd. Wróć do strony GetBootstrap.com, kliknij odnośniki Components, a następ-
nie Panels (panele) po prawej stronie ekranu.
Dodasz teraz komponenty Panel with heading (panel z nagłówkiem) oraz Panel with footing
(panel ze stopką) u dołu swojej strony w miejscu, gdzie znajduje się odnośnik Logowanie.
Poniższy kod pokazuje, jak to zrobić:
/app/views/devise/registrations/new.html.erb
1 div class= panel panel-default
2 div class= panel-heading h2 Rejestracja /h2 /div
3 div class= panel-body
4
5 = form_for(resource, as: resource_name, url: registration_path(resource_name))
(cid:180)do |f|
6 = devise_error_messages!
7
8 div class= form-group
9 = f.label :email br /
10 = f.email_field :email, autofocus: true, class: form-control
11 /div
12
13 div class= form-group
14 = f.label :has(cid:239)o
15 if @minimum_password_length
16 em (minimum = @minimum_password_length znaków) /em
17 end br /
18 = f.password_field :password, autocomplete: off , class: form-control
19 /div
20
21 div class= actions
22 = f.submit Wy(cid:258)lij , class: btn btn-primary
23 /div
24 end
25
26 /div
27 div class= panel-footer = render devise/shared/links /div
28 /div
29
Zmiany wyróżnione są pogrubioną czcionką. Zawartość całej strony została umiesz-
czona wewnątrz sekcji div z opcją class= panel panel-default . Nagłówek strony został
umieszczony wewnątrz sekcji div z opcją class= panel-heading , główna treść strony
— w sekcji div z opcją class= panel-body , a odnośniki — w sekcji div z opcją
class= panel-footer .
90
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
Wynik zmian powinien wyglądać jak niżej:
(Strona gema Devise do rejestrowania użytkowników
https://obrazkowo-programista.c9.io/users/sign_up o poprawionym wyglądzie)
Teraz możesz samodzielnie wprowadzić te same zmiany w innych formularzach gema Devise:
/app/views/devise/registrations/edit.html.erb (strona do zmiany profilu użytkownika)
/app/views/devise/sessions/new.html.erb (strona do logowania użytkownika)
/app/views/devise/passwords/new.html.erb (strona do resetowania zapomnianego hasła)
Zauważ, że powyższe strony wyglądają dość podobnie, więc łatwo możesz wprowadzić
w nich te same zmiany co w pliku /app/views/devise/registrations/new.html.erb.
TWORZENIE ODNO(cid:165)NIKÓW NA STRONACH GEMA DEVISE
Teraz, gdy strony utworzone przez gem Devise wyglądają całkiem dobrze, trzeba w pasku
nawigacyjnym umieścić odnośniki. Można to zrobić, wykorzystując znacznik link_to, tak
jak poprzednio, ale tym razem wprowadzimy małą odmianę.
Odnośniki nie będą widoczne na wszystkich stronach dla wszystkich odwiedzających je
użytkowników. Na przykład użytkownik nie będzie widział odnośnika Edycja profilu, jeżeli
nie będzie zalogowany (a tym bardziej jeżeli się nie zarejestruje!).
Ponadto użytkownik, który już się zalogował, nie powinien widzieć odnośnika do strony
logowania.
Potrzebny jest również odnośnik do wylogowania, który wygląda nieco inaczej niż odno-
śniki utworzone wcześniej.
91
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
SPRAWDZENIE, CZY U(cid:191)YTKOWNIK JEST ZALOGOWANY
Najpierw zajmijmy się najważniejszymi rzeczami, czyli w jaki sposób sprawdzić, czy dany
użytkownik jest zalogowany, czy nie. Na szczęście dzięki platformie Rails jest to bardzo
proste, trzeba w tym celu wpisać nieco kodu Ruby z prostą instrukcją if.
Kod ten można przetłumaczyć następująco: „Jeżeli użytkownik jest zalogowany, wyświetl
podane odnośniki, a w przeciwnym wypadku wyświetl inne”. Poniżej przedstawiony jest
ten kod:
1 if user_signed_in?
2 .
3 .
4 else
5 .
6 .
7 end
8
Odnośniki, które powinny być widoczne tylko wtedy, gdy użytkownik będzie zalogowany
(edycja profilu, wylogowanie), trzeba umieścić pomiędzy pierwszym wierszem a instrukcją
else. Odnośniki, które będą wyświetlane, gdy użytkownik nie będzie zalogowany (logowa-
nie, rejestracja), zostaną umieszczone pomiędzy instrukcjami else i end.
Aby poznać ścieżki prowadzące do odpowiednich stron (edycja profilu, logowanie, wylo-
gowanie, rejestracja), użyj dobrze znanego Ci polecenia rake routes:
1 $ rake routes
2
Zwróć szczególną uwagę na ścieżki zawierające komendę GET (pamiętaj o dodaniu koń-
cówki _path do zmiennych w poleceniu link_to):
Logowanie: new_user_session_path
Edycja profilu: edit_user_registration_path
Rejestracja: new_user_registration_path
Wylogowanie: destroy_user_session_path
Przyjrzyjmy się ostatniej ścieżce, oznaczającej stronę wylogowania. Wynik polecenia rake
routes pokazuje, że ścieżka ta zawiera komendę DELETE (usuń), a nie GET (pobierz). To zro-
zumiałe, ponieważ wylogowanie z aplikacji oznacza „usunięcie” sesji.
92
Poleć książkęKup książkęROZDZIA(cid:146) 4. OBS(cid:146)UGA U(cid:191)YTKOWNIKÓW ZA POMOC(cid:107) GEMA DEVISE
Jednak odnośnik do komendy DELETE tworzy się nieco inaczej niż zwykły odnośnik.
Wygląda on następująco:
1 = link_to Wylogowanie , destroy_user_session_path, method: :delete
2
Zwróć uwagę, że kod wygląda podobnie jak w przypadku zwykłego odnośnika, tylko na
końcu dodana jest opcja method: :delete. To bardzo proste.
ZMIANA PASKA NAWIGACYJNEGO
Masz zatem przygotowaną instrukcję if, jak również odnośniki do stron gema Devise, które
zamierzasz dodać. Zmień pasek nawigacyjny:
/app/views/home/_header.html.erb
1 nav class= navbar navbar-default role= navigation
2 div class= container
3 !-- Brand and toggle get grouped for better mobile display --
4 div class= navbar-header
5 button type= button class= navbar-toggle collapsed data-toggle= collapse
6 data-target= #bs-example-navbar-collapse-1
7 span class= sr-only Toggle navigation /span
8 span class= icon-bar /span
9 span class= icon-bar /span
10 span class= icon-bar /span
11 /button
12 = link_to Obrazkowo , root_path, class: navbar-brand
13 /div
14
15 !-- Collect the nav links, forms, and other content for toggling --
16 div class= collapse navbar-collapse id= bs-example-navbar-collapse-1
17 ul class= nav navbar-nav navbar-right
18 li = link_to Strona g(cid:239)ówna , root_path /li
19 li = link_to O mnie , home_about_path /li
20
21 if user_signed_in?
22 li = link_to Edycja profilu , edit_user_registration_path /li
23 li = link_to Wylogowanie , destroy_user_session_path,
(cid:180)method: :delete /li
24 else
25 li = link_to Logowanie , new_user_session_path /li
26 li = link_to Rejestracja , new_user_registration_path /li
27 end
28
29 /ul
30 /div !-- /.navbar-collapse --
31 /div !-- /.container-fluid --
32 /nav
33
93
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
Zmiana polega na dodaniu wierszy od 21. do 27. Zwróć uwagę, że instrukcja if sprawdza-
jąca, czy użytkownik jest zalogowany, została umieszczona poniżej odnośników Strona
główna i O mnie, ponieważ odnośniki te muszą być wyświetlane niezależnie od tego, czy
użytkownik jest zalogowany, czy nie.
Zrobiłeś już całkiem sporo. Użytkownicy mogą się rejestrować, logować, zmieniać swoje
profile, a pasek nawigacyjny zmienia się dynamicznie w zależności od tego, czy użytkownik
jest zalogowany, czy nie.
Teraz pora na dodanie do aplikacji prawdziwej funkcjonalności umożliwiającej użytkow-
nikom ładowanie „pinów” na stronę. Zajmiemy się tym w następnym rozdziale.
94
Poleć książkęKup książkęSKOROWIDZ
adres URL, 153
Amazon S3, 124
klucz dostępu, 128
klucz poufny, 128
aplikacja, 12
toolbelt, 41
architektura MVC, 23
A
B
baza danych, 81
PostgreSQL, 83
produkcyjna, 83
programistyczna, 83
sqlite3, 83
biblioteka jQuery Masonry, 133, 137
Bitbucket, 32, 35
błędy, 44
Bootstrap, 47, 59
CRUD, 99, 102
CSS, 62, 97
C
D
definiowanie adresu URL, 153
Devise Helper, 111
dodawanie
komponentów Bootstrap, 59
nazwy użytkownika, 146
nowej strony, 27, 47, 49
paginacji stron, 142
domena, 154
dostosowanie platformy Bootstrap, 70
drzewo katalogów, 29
G
gem, 25
bootstrap-sass, 60
Devise, 75, 78, 80, 85
jquery-turbolinks, 134
paperclip, 117
postgres, 83
will_paginate, 142, 143
generator, 77
GitHub, 32, 38
I
identyfikator klucza dostępu, 128
index, 28, 49
instalacja
gema Paperclip, 119
narzędzia ImageMagick, 118
platformy Bootstrap, 60
programu Git, 33
instrukcja if, 114
Poleć książkęKup książkęJ
język
LESS, 70
Ruby, 10
SASS, 70
jQuery Masonry, 133, 137
Jumbotron, 64, 145
K
katalog
app, 12
controllers, 24
db, 24
devise, 87
git, 34
images, 62
javascripts, 62
layouts, 55
migrate, 81
models, 24
pins, 96
stylesheets, 62
views, 24
klasa
alert alert-info, 79
form-group, 88
klucz
poufny, 128
SSH, 36
kolejność pinów, 141
komenda
DELETE, 85
GET, 85
POST, 85
komentarz, 25
komponent
Jumbotron, 64, 145
Navbar, 68
komponenty Bootstrap, 59
komunikat
flash, 79
o błędzie, 118
konsola Amazon AWS, 126
kontrola wersji, 32
RUBY ON RAILS. TWORZENIE APLIKACJI WWW
kontroler, 23, 49
kontroler szkieletu, 100
L
lista pinów, 104, 110, 132, 137, 143
logowanie, 86, 92
(cid:146)
ładowanie obrazów, 117, 120
M
migracja do bazy danych, 84
MVC, Model, View, Controller, 23
N
nadawanie uprawnień, 127
nazwa użytkownika, 146
O
obiekt
@pins, 123
Devise, 111
pin.description, 149
obsługa
bazy danych, 81
użytkowników, 75
odnośnik, 91
Customize, 151
do strony, 51
Less variables, 71
Logowanie, 90
masonry-rails, 134
opcje paginacji, 143
P
paginacja stron, 131, 142
pasek nawigacyjny, 68, 93, 105
pierwsza aplikacja, 22
piny, 98
platforma Bootstrap, 59, 60
158
Poleć książkęKup książkęplik
_form.html.erb, 101
_header.html.erb, 57, 68
application.html.erb, 55, 56, 63
bootstraply.css.scss, 73, 136, 152
Gemfile, 25–27, 43, 61, 76
index.html.erb, 57
new.html.erb, 88
pins.coffee, 135
pins.scss, 136
pins_controller.rb, 120
README, 19, 39
routes.rb, 50
show.html.erb, 114
pliki
.erb, 29
częściowe, 54
gemów, 25
migracji, 102
poddomena, 153
podziały wierszy, 132
polecenia terminalowe, 20
polecenie
bundle install, 84
cd, 34
Create repository, 36
generate, 50
Manage account, 36
rake db migrate, 106
rake routes, 52, 85
pomoc, 44
portal Amazon AWS, 125, 127
PostgreSQL, 83
powiązania, 107
program
Git, 32
ImageMagick, 117
VirtualBox, 16
przekierowanie strony, 30
przestrzeń robocza, 17
przywracanie kodu, 35
R
rejestrowanie użytkowników, 91
repozytorium, 36, 39
SKOROWIDZ
S
SASS, Syntactically Awesome StyleSheets, 70
serwer WEBrick, 22
serwis Pinterest, 150
skrót klawiaturowy
Command+C, 35
Command+S, 30
Ctrl+C, 35
Ctrl+S, 30
Ctrl+V, 36
sprawdzanie
logowania, 92
strony, 85, 104
widoków szkieletu, 97
sqlite3, 83
stosowanie powiązań, 108
strona, 12
index, 28, 49
z listą pinów, 145
system
Bitbucket, 32, 35
GitHub, 32, 38
szkielet aplikacji, 95
(cid:165)
ścieżka do strony, 50
środowisko programistyczne, 15, 18
T
tabela, 102
terminal, 12
tworzenie
nowej strony, 48
odnośników, 51, 91
paska nawigacyjnego, 68
pierwszego projektu, 21
pinów, 100, 110
plików częściowych, 54
powiązań, 109
prostej aplikacji, 47
szkieletu aplikacji, 95
własnej domeny, 154
zasobnika, 126
159
Poleć książkęKup książkęRUBY ON RAILS. TWORZENIE APLIKACJI WWW
typy
danych, 96
obrazów, 120
U
udostępnianie aplikacji, 40
upiększanie witryny, 151
uruchomienie aplikacji, 22
urządzenia mobilne, 139
usługa
Amazon S3, 117, 124
Heroku, 40, 42, 85
uwierzytelnianie użytkowników, 107
W
wersja Ruby i Rails, 19
widok, 23, 100
wiersz poleceń, 12
wygląd strony, 131, 138
wysyłanie kodu do usługi, 42
wyświetlanie pinu, 122, 138
Z
zapisywanie obrazów, 124
zasobniki, buckets, 125
zmiana
kolejności pinów, 141
koloru przycisków, 152
paska nawigacyjnego, 93, 105
wyglądu stron, 87
znak
#, 25
@, 72
$, 12
160
Poleć książkęKup książkę
Pobierz darmowy fragment (pdf)