8/11/2019 Learn Rails
1/195
JF M Q GF Ruby on Rails tutorial 1.b12 (prerelease) 31 August 2013
Daniel Kehoe
8/11/2019 Learn Rails
2/195
GFL FLK1. FLJG
8/11/2019 Learn Rails
3/195
HL J 1
FLJG JKL KL H GF QGMJ H L LG D JF M Q G
GM\DD D JF C Q GF HLK KG QGM\DD N KGD < >GMF< L GF >GJ OGJC F O HHD L GF KG QGM\DD F F KK GF D DK < N DGH JK FDK K GE HGHMD J G >GJ O < N DGHE FL.
3
8/11/2019 Learn Rails
4/195
Is It for You?
GM
HHD L GF.
K LMLGJ D K < D > QGM J :
U KLM< FL
U KL JLMH >GMF< J
U E C F J J F
G K L K KGMF< D C QGM? < JK O G OGJC F KG D E < GJ J HLMLGJ D K GG< O Q LG L FLJG L GGC HJGN < JGMF< F L Q N F\L >GMF< F FQ
HL JK J < FK DQ H C < O L D FCK LG C JGMF< J < F . QGM\DD O DD- F>GJE < KLM< FL, ML QGM E Q F N J > F K L GE KL J QGMJ MJ GK LQ. GDDGO L D FCK GFDQ O F QGM O FL LG < N
J K J K L K> L GF F M D< F KGE L F F< E C F L JMF. >JMKLJ L F F< DK KF\L KQ >GJ FF JK. B >GJ QGM L LG LK L CK. > L L E K QGM\J J L HJG D EK D
OJ LL F L LG
8/11/2019 Learn Rails
5/195
What To Expect
K GGC K L >GMF< L GF >GJ K J K G> LMLGJ DK L L GEH>JGE L DKAHHK HJG L.
Ra')/A / E4a* )#/ a+" T10 'a)/
MLGJ DK >JGE@J DK HHKL C QGM GF M < < H L KL JL F O L KGDMLMLGJ D). GM\DD HJG J KK LG FL JE < L -D N D LMLGJ DK F< KGDKAHHKF-< HL M < K >GJ HJG> KK GF D DK < N DGH JK.
L K EHGJL FL LG > D K L K> L GF F< GEHD K E FL K QGM DFLJG F K < HJG JEK QGMJ GEHD K E FL; QGM\DD > D < HDGQ QGMJ DK HHD L GF. F L DKAHHK HJG L K LG HJGN < KL JL J HHD LGM\DD M D< J D HHD L GFK L L QGM F MKLGE R F< < HL
GJ >GJ D FLK.
MFJ IM FLDQ; OGJC F< K JN K K QGMJ H JKGF D YJ > J F EHD E FL L GFZ KG QG* FL F F F< < N DGHE FL G> L DKAHHK HHD L GFK K KMLG L DKAHHK LMLGJ DK.
N#40 S0# /
F QGM\N GEHD L < L K LMLGJ D, QGM O DD J GJ EGJ JGE L DKAHHK HJG L, L PL GGC F
OGJCK GHK F< < N DGH J GGL EHK L L HJGN < FL FK N LJ F F
MJJ MDMEK G>L F KC H L K K. L L K LMLGJ D QGM\DD NGF HLK; QGM OGF\L > D GN JO DE < GJ >JMKLJ L < K QGM GFL FM
K LMLGJ D K GG< HJ H J L GF >GJ:
U
8/11/2019 Learn Rails
6/195
J D KK < O L E FQ L PL GGCK, OGJCK GHK, F< D KKJGGE HJG JGF DK. D N L K GGC K MF IM F GN J F L K K O DL F IM K G> HJG> KK GF D DK < N DGHE FL.
The Application
\DD M D< K O HHD L GF L L F MK < Q LQH D O DD F DM< GE H , Y GMLZ H , GFL L >GJE, F< GHL GF LGD KL. GM\DD DKG D JF GO LG GDD L < L >JGE >GJE F< K N L
J N .
GM\DD > F< L GEHD LD JF-J DKHHD L GF GF L M . L K OGJC F HHE FL F < Q L E G> PH J F < < N DGH JK KG QGM F DO QK
EHD E FL L GFZ > QGM N HJG D EK.
A Note to Reviewers and TeachersK GGC HHJG K L KM L < >> J FLDQ L F EGKL FLJG HJG HJG>GD< F , L FLJGGFLJGDD J < K F H LL JF Q J L F L GEHGF FLK E FM DDQ.
L KL-
8/11/2019 Learn Rails
7/195
F L * , L J N O HHD L GF DDGOK QGM LG FFGL L LLGGD J. D C L H F D GF LG J N D GJ < L < L LGGD J.
L GM L DDGGF F< GL J GEE FL < N K. A>L J QGM\N E < QGML > D LG E L< F D@< F DC G . GE.
GM F K L FL J GGC >GJ K F< F E KM KL
A 10 0 B (
\N GL L D KL >GMJ LGH-FGL GGCK L L L DK. L, O LG> DK, D N L J K F < >GJ LMLGJ D L L K J < LG
FLJG J D-OGJD< DK < N DGHE FL. * FQ H GLG DK MF< E FL D GF HLK G> O < N DGHE FL F KK GF D DK < N DGH JK F L OGJCHD .
S01"#+0 a+" P## E"'0 /
H F< F GF L L E QGM N N D D , QGM F EHJGN L GGC
User testingUser testing GDDGO L LMLGJ D FKLJM L GFK F< < FL >Q JJGJK GJ D
Report typos and minor errorsReport typos and minor errors GMJ Q K J FG GJ EHJG
Technical commentsTechnical comments < FL >Q J GMK JJGJK, < < K, GJ HGGJ HJ L
Book reportBook report J L > O H J J H K G> Y GGC J HGJLZ K > QGM O J JAE RGF, D L F N JLM K F< >D OK
AFQ > < C K HHJ L QGMJ
T#!&+'!a) E"'0 /
> QGM\N J < LG MDD L F D J N O, J J L KL F< J DK, F DM< F C JGMF< GF L M < F HJ F>GJ LK HGHMD J LQ, J < L JL D >GJ GEHD L FLJGGJ QGM LJQ LG MK
How the Web Works
KL JL O L KGDML K K, K HJGE K J , JGEJ >GP, GJ FL JF L PHDGJ J.
JGOK JK Japplications(KG>LO J HJG J EK) L L OGJC Q J < F files.
GEH J word processing programO L web browser. BGL OGJ< HJG KK F HJG J E
O JGOK JK J < > D K. * JGKG>L GJ< J D K L L J KLGJ < G< KHD Q D K >JGE J EGL GEHMserversLG< KHD Q O H K. FGO F L L N JQL F GE K >JGE > D K O DD
HHD L GF.
A O JGOK J MK K >GMJ C F > D K LG < KHD Q O H K:
U * Wstructure (D QGML) F
8/11/2019 Learn Rails
10/195
L L O K L K J < D >GJ H JL D H QK K H H JK (O O K L< ). BML EGKL K L K GF L O , KH DDQ L GK L L DDGO
GEE FLK, GJ GJ< J HJGL F GE F O H K O L F>GJE L GF >JGE GJE L GF KM K MK J\K F E , GEE FLK, GGC D C KGL J J H L L N , KLJM LMJ < < L . A < L Kquery F HJGN < K D L GF G> < L
MKLGE R K O H >GJ H JL MD J MK J GJ F K L O HN K L.
QF E O K L K MK HJG J EE F D F M KM KM QLG KK E D * , , ' N J HL > D K GF L >DQ >JGE GEHGF FL > D K GJ < L K . A KG
M Q F< GJ F R < MK F L DKdevelopment framework K DKweb application. A OK JN J HJG J E L L JMFK DK HHD L GFK LG F J L LO J KM K DK F KK < L K , GE F F L J KMDL
KL L GFL FL LG < D N J < LG O JGOK J K * , , F< ' NE F< L L L O JGOK J GFDQ J N K GJ< F JQ * , , F< ' NL EK DN K J KK E D < QGM J FGL G F LG MK < L K , L J J GL J GG< J KO K L MK F HJG J EE F D F M . GJ P EHD , > QGM J J L
L G>L F E C K K FK LG KK E D F * > D >JGE KE DD J GEHGFE L E C KE DD > D L L O DD F DM< < GF N JQ H LG E CYH JL DKZ). 'MKL K EHGJL FLDQ, > QGM J MK F DK, QGM F O L G< L L K F < N DGH < F< L KL < Q GL J H GHD KG QG
N JQL F QGMJK D>.
O < KHJ < HJ L G> K J F G< O L GL J < N DGH JK >GJ >O L KLJ F JK LG M D< HHD L GFK GJ LGGDK, K CFGOF Kopen sourceKG>LO J < N DGHE
DK K L L JL G> N J FL GH F KGMJ < N DGHE FL GEEMFD N J L OGJC G> L FK G> L GMK F KC DD < < N DGH JK O F
HHD L GF. F M Q G< K H C < MH >GJ GL JK LG K J , L gem. F E K HL MK K J < G< K N DM D .
M Q K HJG J EE F D F M ; DK K < N DGHE FL >J E OGJC. K L G> structures and conventions>GJ M D< F O HHD L GF MK F L MK DKG library GJ GDD L GF G> gemsL L < N DGH JK MK K L GJ G> FQ HHD L GF. BQ MK F DK, QGM L O DD-L KL < G< L L EHD E
F < < > LMJ K G> J E OGJC, GJ MK FK , QGM GMD< E P L GEHD P HJG J EE F G< L L KK K LG< L L F J L K * . L L FK L G> Q JK G> < N DGH JK\ G
E FL F F F< < M F KM G< , DK HJGN < K D J JQ G> G
10
http://en.wikipedia.org/wiki/Ruby_(programming_language)http://en.wikipedia.org/wiki/Open-source_softwarehttp://en.wikipedia.org/wiki/Open-source_softwarehttp://en.wikipedia.org/wiki/Ruby_(programming_language)8/11/2019 Learn Rails
11/195
< L K KK >JGE L G< L L < KHD QK H K, F>GJ Fseparation of concerns , F DK, F< F PHD F L GF G> O Q L K HGHMD J, KL K M QGF DK?
What is Rails?
G > J, \N < > F < DK F LOG O QK: Kstructures and conventions>GJ M D< F OHHD L GF, F< K library GJ GDD L GF G> G< .
G J DDQ MF< JKL F< DK, F< KM < F M D< F DK HHDDK >JGE K P GL J H JKH L N K. C K P D F< E F F GMFL J F
< >> MDL LG MF< JKL F< DK MFD KK QGM DGGC L L >JGE EMDL H
J J K P < >> J FL O QK G> DGGC F L DK, KMEE J R < >JGE LL K M Q DK?
JGE L perspective of the web browserperspective of the web browser , DK K K EHDQ HJG J E L L F J, F< ' N J HL > D K. K > D K J F J L < D K Q MK F L O < N DGHN JQ JGOK J. L J QGM\DD P E F L K > D K O F QGM D JF LG LHHD L GF.
JGE L perspective of a programmerperspective of a programmer , DK K K L G> > D K GJ F R < O LKLJM LMJ . KLJM LMJ K L K E >GJ N JQ DK HHD L GF; LE C K L KQ LG GDD GJ L O L GL J DK < N DGH JK. MK LLG E C O HHD L GF.
JGE L perspective of a software architectperspective of a software architect , DK K KLJM LMJ G> abstractionsL L F DHJG J EE JK LG GDD GJ L F< GJ F R L J G< . FC F F KL
JGMH L F K F L GJ K F< F DQR J D L GFK HK. GF HLM DJ D L GFK HK F E < YJ DZ F G< . G>LO J HJG J EK J M DJ DZ L L J L EGN F H JLK G> KG>LO J E F . G KG>LO J classes J L
K H JLK G> KG>LO J E F . A D KK F J HJ K FL KGE L F GDD L GF G> N J GMK LLJ ML K GJ HJGH JL K (>GJ P EHD , KF< E D D KK K L L D N D G> KLJ L GF CFGOF K F A , GJapplication programming interface. DK A KGJ F R < LG GF>GJE LG JL F O < DQ CFGOFsoftware design patterns. GM\DD GE
> E D J O L L K KLJ L GFK K QGM M D< DK HHD L G
11
http://en.wikipedia.org/wiki/Separation_of_concernshttp://railsapps.github.io/what-is-ruby-rails.htmlhttp://railsapps.github.io/what-is-ruby-rails.htmlhttp://railsapps.github.io/what-is-ruby-rails.htmlhttp://railsapps.github.io/what-is-ruby-rails.htmlhttp://api.rubyonrails.org/http://en.wikipedia.org/wiki/Software_patternhttp://en.wikipedia.org/wiki/Software_patternhttp://api.rubyonrails.org/http://railsapps.github.io/what-is-ruby-rails.htmlhttp://railsapps.github.io/what-is-ruby-rails.htmlhttp://railsapps.github.io/what-is-ruby-rails.htmlhttp://railsapps.github.io/what-is-ruby-rails.htmlhttp://en.wikipedia.org/wiki/Separation_of_concerns8/11/2019 Learn Rails
12/195
D JF GML Lmodelviewcontroller< K F H LL JF. AK FF J, QGM O DD K< K F H LL JF J >D L < F L > D KLJM LMJ G> DK HHD L
F DGGC L DK >JGE L perspective of a gem hunterperspective of a gem hunter . DK K HGHMD J MK< N DGH JK N OJ LL F F< K J < E FQ KG>LO J D J J K ( M QHJGN < MK >MD > LMJ K >GJ M D< F O K L K. F L FC G>
GDD L GF G> EK L L HJGN < K >MF L GF D LQ, HDMK MKLG> LMJ K >GJ H JL MD J O K L . GE EK J J IM J < Q N JQ
P EHD , < L K < HLGJK F D DK LG GFF L LG < L K K. E C < N DGHE FL K J, >GJ P EHD , EK >GJ L KL F L L DH HJG
L DD GL J EK MF L GF D LQ LG L O K L , KM K EK >GHJG KK F J < L JJGE L perspective of a time travelerperspective of a time traveler F GJ< J LG MF< JKL FEHGJL F G> software version control. H > DDQ, O MK LLJ N K GF GFLJGD KQK
J GJ< K J K G> KF HK GLK G> QGMJ HJG L\K > D KQKL E. L E CJ GN J > D K; EGJ EHGJL FLDQ, L D LK QGM E C PHDGJ LGJQ E Q < < LG < K J QGMGEEMF LQ GDD GJ L GF. L F C H EMDL HD N JK GFK (Y J F
KQF O L J EGL L M J HGK LGJQ, E C F L HGKK D LG GDDKGMJ GJ HJGHJ L JQ HJG LK. LJ LDQ KH C F , L F< L M
J LGGDK L L F MK < GF FQ < N DGHE FL HJG L). AF< L J JGFLJGD KQKL EK L L J MK < F GH F KGMJ < N DGHE FL. BML H
< N DGH J MK K L F< L M GFKL FLDQ GF FQ J D-OGJD< DK EK L L G FLG GEHD P O HHD L GF OGMD< FGL P KL O L G
F DDQ, O F GFK < J DK HHD L GF >JGE L perspective of a testerperspective of a tester . G>LO J L KK H JL G> DK MDLMJ ; DK K L > JKL O < N DGHE FL HD L>FL J L < H JL G> < N DGHE FL. B >GJ DK, MLGE L < L KL F O
< N DGHE FL. A O HHD L GF OGMD< L KL < Q MK JK F< (E QMLGE L < L KLK O J MK L F OJ LL F >L J L OGEHD L . DK FLJG KL- J N F N DGH
O < N DGHE FL GEEMF LQ. L , L KLK J OJ LL Fbefore FQ EHD E FL L GFG< F . L E Q K E G JKL, ML >GJ KC DD < HG J F LG L HJG J EE F HJG KK. JKL, L < N DGH J O DD N
LG GEHD K < F< L FC L JGM DL JF L N K F< < K K. O DD N GEHD L L KL GN J >GJ L HJG L. L GG< L KL Grefactor , J JJ F F G< LG EGJ D FL GJ >> FL. MFF F L KLJ > LGJ F HJGN < K KKMJ F L L FGL F F
K K F K F KK JQ KC DD G> F PH J F < DK < N DGH J>GJ FF JK, Lwill not FLJG KL- J N F N D
OGJC L JGM EGJ JGE L DKAHHK HJG L, QKL- J N F N DGHE FL.
12
http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controllerhttp://en.wikipedia.org/wiki/Git_(software)https://github.com/https://github.com/http://en.wikipedia.org/wiki/Git_(software)http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller8/11/2019 Learn Rails
13/195
Stacks
G MF< JKL F< DK >JGE L H JKH L N G> HJG> KK GF D DK technology stack F< J G F R L L DK F N EGJ L F
A L FGDG Q KL C K K L G> L FGDG K GJ KG>LO J D J J KHHD L GF GJ < D N J O H K. Y L CZ K L JE L L K MK < DG
J K FG GJ F R L GF L L K LK L JMD K GML O L G K FLG QGMJ G G> KL C J >D LK QGMJ PH J F , N DM K, F< H JKGFJ D GF GJ > NGJ L N J .
GJ P EHD , * JC M C J J < N DGH < GGC F 2004 MK F LA* HHD L GKL C:
U FMP (GH J L F KQKL E)
U AH (O K JN J)
U *Q (< L K )
U (HJG J EE F D F M )
GJ L K LMLGJ D, QGMJ HHD L GF KL C O DD :
U * , FMP, GJ FJ E OGJC)
GE L E K O F O L DC GML KL C, O GFDQ J GML H JL G> P EHD , DK KL C F DM< K L EK O GGK LG LMJ K
< N DGHE FL K J. F O K D L L EK O \DD MK >GJ DK GGK F KL C.
GE L E K L G G> GEHGF FLK K H JKGF D HJ > J F . 'MKL K J< L L E J LK G> > NGJ L LGGDK F< L F IM K F FQ HJG> KK G< KHML O L\K L KL DK KL C >GJ < N DGHE FL.
GEH FQ37K F DK , O J L J LGJ G> DK OGJCK, MK K L K DK
U B >GJ N O L EHD L K
U *Q >GJ < L K K
U * F KL >GJ L KL FL K FGL EHGJL FL ( L L K HG FL) LG CFGO O L L JGFQEK E F (O
13
http://en.wikipedia.org/wiki/LAMP_(software_bundle)http://37signals.com/http://37signals.com/http://en.wikipedia.org/wiki/LAMP_(software_bundle)8/11/2019 Learn Rails
14/195
AFGL J KL C K EGJ HGHMD J EGF DK < N DGH JK:
U ED >GJ N O L EHD L K
U GKL J >GJ < L K K
U KH >GJ L KL F
\DD D JF D L J O L L L JEK E F. GJ FGO, MKL J G F R L L H>J E OGJC F KO HH < GML, MKL D C E C F KM KL LML GFK O
L J KL MJ FL.
GM F D JF EM GML DK Q >GDDGO F L PH JLK\ < L K > NGJ L KL C. < L K J KGMJ G> EM FFGN L GF F< EH>J E OGJC. F L F L JGO< HJ N DK; MKM DDQ L
DK KL C J L EGKL HGHMD J.
HJGD > J L GF G> G K >GJ L DK KL C F E C D JF F KK GF D < N DGH JK.
14
8/11/2019 Learn Rails
15/195
HL J 3
L DH F GM L F KC GJ > F< F FKO JK LG HJG J EL C N J>DGO FKO JK J G>L F F DM< < F GG D K J J KMDL
LG L C N J>DGO LG K J >GJ FKO JK LG QGMJ IM KL GFK. C GGN J>DGO J DH>MD > QGM C J >MDDQ LG E C KMJ L FKO
LG GEH J FKO JK LG K E D J IM KL GFK; L EGKL HGHMD J FKO J FKO J LG QGMJ H JL MD J HJG D E.
DK GLD FK >J L D H GF GLD F >GJ DK IM KL GFK KL >> < LG J >MDDQ L FC GML F< < K J QGMJ HJG D E ML KGE L E K
D N PH JL.
References
F LGH J KGMJM Q F< DK , F DM< F GGCK F< DG K.
> QGM > D GN JO DE < Q DD L D FCK, J E E J L L QGM F MKLMLGJ D HHD L GF O L GML FQ
8/11/2019 Learn Rails
16/195
Ra')/G1'"#/
DK M < KJ DK\K G>> D GJ FL JE< N DGH JK O G DJ J F > QGM O FL LG C L GJJ L KQFL P >GJ DL DK M < K >L J GEHD L F L K LMLGJ D.
Ca0/#0/
G K > >> J K J L < MK >MDDK B FF J L LL L HJGN < K GG DK KQFL P F< GEE F
8/11/2019 Learn Rails
17/195
*GKL D J MJ F J K N E LMHK GJ MK J JGMH E L F K >GJ D* LMH. GEGJ GG D YJM Q J DK (EQ LQ)Z. GEEMF LQ G> DK QGM J F J DK E LMH, L K JLG GL J < N DGH JK >GJ DH F< KMHHGJL. GM E Q > F< JGMH L L
FF JK O G KLML F KHGFKGJ C F LK GJC L GFKO F N F F GJO C F< GDD GJ L N G< F K KK GFK. GM F< KLM QGM J OGE F D JF F DK, DGGC >GJ GF G> L >J OGJCK GHDKBJ GJ OGE F; N JQGF GFK < J <
L HJG> KK GFK K F GMJ < LG H JL H L ; F< E F J F DMJ F QGM KL J F< N EGJ >MF.
J \K HGHMD J LJ F< F L OGJCHD >GJ HJG J EE JK LG OGJC K > L N , GL LG F J K H
CFGOD < , F< E FQ G< JK DGN L. F HJG J EE JK J FGL F L KK J K J F J EGL DQ F< GEEMF L O L N < G L.
GGC >GJ GHHGJLMF L K LG H J HJG J E. L\K L KL O Q LG D JF LH J F H JLF J K GFDQ FGL J FF J. JF EGJ GML H J HJG JH JHJG J EO L .EF< > F< H J F H JLF J LJM QH J. GEGJD LKH J.F L.
L\K DGGC L KGE KG D KH LK G> HJGGJ OHHD L GF.
17
http://www.meetup.com/http://en.wikipedia.org/wiki/Hackathonhttp://workshops.railsbridge.org/http://railsgirls.com/http://www.pairprogramwith.me/http://rubypair.com/http://www.letspair.net/http://www.letspair.net/http://rubypair.com/http://www.pairprogramwith.me/http://railsgirls.com/http://workshops.railsbridge.org/http://en.wikipedia.org/wiki/Hackathonhttp://www.meetup.com/8/11/2019 Learn Rails
18/195
HL J 4
D F GMJ JGJGE GL J ML GJK >G MK GFDQ GF G< F . BML DK < NG>LO J < N DGHE FL K HJG KK L L FK O L HD FF F F< F
J N O. G< F , L KL F , F< < HDGQE FL K L L GJ ML QGM\DD FFL J HJG KK LG KM < HJG> KK GF DDQ. L\K O Q O DGGC L H
E F E FL.
GJ L K FF F LMLGJ D, O \DD FLJG
O DD F DM< < F QGMJ HHD L GF. BML > QGM\J H JL G> L E,GFKMDL FL, GJ F GJHGJ L K LL F , L E Q FGL D J O G K JL HHD L GF >JGE L HG FL G> N O G> L HHD L GF MK J. G> LMJ K F< >MF L GF D LQ J KK FL D F< O EMKL D >L Gmanagingscope F< GE L F feature creep.
L\K EHGJL FL LG KK F HJG MDLQ E C F HJG J KK.
F D J GJ F R L GFK, HJG
8/11/2019 Learn Rails
19/195
F L H KL, O F KG>LO J F F J F HJ E J DQ K JN < GN JFE FL GHJG F < Kuse cases , F< MDE F L KL J, EGJ >D P D HHJG LHD FF F .
K J KLGJ KJ O Q LG < K MKK F< < K J L J IM J E FLK >GJ KG> HJG KK G> OJ L F MK J KLGJ K DHK HJGQ
F < < >GJ F HHD L GF. BJ C F MF L GKLGJ K DHK GJ F R L OGJC F< LJ C HJG J KK LGO J< GEHD L
K J KLGJ K J G>L F PHJ KK < F L >GDDGO F >GJE L:
As a I want In order to
J K F P EHD :
*Join Mailing List*As a visitor to the websiteI want to join a mailing listIn order to receive news and announcements
A LQH D HHD L GF K MK J KLGJ K, >JGE K K FH JL MD J >MF L GF D LQ L L E C K L HHD L GF MF IM .
GM LO J LG OJ L MK J KLGJ K. 'MKL MK FGJ L KC E F E FL.
25
http://en.wikipedia.org/wiki/Getting_Things_Donehttp://railsapps.github.io/rails-project-management.htmlhttp://en.wikipedia.org/wiki/Kanban_(development)http://en.wikipedia.org/wiki/Lean_manufacturinghttp://en.wikipedia.org/wiki/Swim_lanehttp://railsapps.github.io/rails-project-management.htmlhttps://trello.com/https://trello.com/http://railsapps.github.io/rails-project-management.htmlhttp://en.wikipedia.org/wiki/Swim_lanehttp://en.wikipedia.org/wiki/Lean_manufacturinghttp://en.wikipedia.org/wiki/Kanban_(development)http://railsapps.github.io/rails-project-management.htmlhttp://en.wikipedia.org/wiki/Getting_Things_Done8/11/2019 Learn Rails
26/195
Agile Methodologies
GJ KGDG HJG L GJ KE DD L E, QGM\DD F O L K EHD LG-C F F O HHD L GF >GJ E F F QGMJ KG>LO J < N DGHE FL HJG
> QGM\N GL FGM H GHD LG F < LG J HJG L E F J, QGM KE F E FL KG>LO J L L KMHHGJLK L EK MK FA D KG>LO J < N DGHE FLE L G QGM\J G F J < N DGH JK >GJ KL JLMOGJC >GJ F KL D K < GEH FQ. F EGKL KM KK>MD GEH F K, AJ HD < L EM -E D F DD HJG KKL L O K GF L FGJE >GJ KG>LO J< N DGHE FL.
MJ JL D GFDK F< JG L * F E FLG K FLG EGJ < L D.
26
http://en.wikipedia.org/wiki/Agile_software_developmenthttp://www.pivotaltracker.com/http://agilescout.com/best-agile-scrum-tools/http://en.wikipedia.org/wiki/Waterfall_modelhttp://railsapps.github.io/rails-project-management.htmlhttp://railsapps.github.io/rails-project-management.htmlhttp://en.wikipedia.org/wiki/Waterfall_modelhttp://agilescout.com/best-agile-scrum-tools/http://www.pivotaltracker.com/http://en.wikipedia.org/wiki/Agile_software_development8/11/2019 Learn Rails
27/195
HL J 6
A GMFLK GM * Q GJ
L M GMFL >GJ >J .
\DD DKG K F< E D >JGE L HHD L GF, O O DD J IM J E D GMFL. A E DGMFL K >J .
\DD J L >GJE L L DDGOK O K L N K LGJK LG YGHL- FZ LG E* D EH GMFL, O K >J .
F DDQ, O \DD < HDGQ L LMLGJ D HHD L GF LGJGCMO HJGN < K DK HHD
GKL F . L GKLK FGL F LG K L MH JGCM GMFL F< < HDGQ KO FL.
GitHub
DK < N DGH JK MKL M>GJ GDD GJ L GF F< J EGL CMH G> HJG
GJ L K LMLGJ D, KM KL QGM L >J H JKGF D L M GMFL> QGM K GOK QGM J K J GMK GML D JF F DK.
GM\DD KC < LG HJGN < MK JF E . K F F CF E GJ K GF E (>GJ P EHD , QGMJ O LL J MK JF E ).
GM\DD KC < LG HJGN < F E D QGM J L JGCM GMFL LG < HHHD L GFK, QGM K GMD< MK L K E E D GJ L MLLC > O E FML K LG GJE L GF LG QGMJ GMFL
HJGN < QGMJ J D F E F< HM D E D , >GJ P EHD L E LMH, C L GF, GJ GF> J F
E D QGM F, HJGN < O K L
8/11/2019 Learn Rails
28/195
H ). F F J D, QGM OGF\L PHGK < LG KL DC JK GJ KH EE JK ( PQGM J GH F GML QGMJK D> GF L M .
L J \DD K GO QGM GO LG K L MH F< MK L F< L M .
Gmail
LMLGJ D K GOK GO L HHD L GF F GFF L LG E D E D K GMJ P EHD MK E FQ H GHD DJ QGM GJE L GF > QGM 2000 GJ > O J KM K J JK >GJ >J . J K FG GKL LG K L MH F
A>L J QGM N K L MH * D EH GMFL, J L F O E D F D KE D GJ Y J L KL.Z D KL F E F< GL J
> QGM L >JMKLJ L < O L L GEHD P F< GF>MK F * D EH FLL L L >J F
8/11/2019 Learn Rails
29/195
HL J 7
L L JL QGM >GDDGO L K LMLGJ D DGK DQ, QGM\DD N OGJC F HHDP EHD HH F LD JF-J DKL M J HGK LGJQ. > QGMJ HHD L GF GDDGO F L LMLGJ D, GEH J L G< LG L P EHD HH F LK CFGOF LG OGJC.
GFD F < L GF G> L K LMLGJ D GFL FK GEE FLK K L GFL L F< G> L LMLGJF GMJ QGM LG G>> J > < C LG EHJGN L K LMLGJ D.
> QGM > F< HJG D EK GJ O K LG KM KL EHJGN E FLK, \E J LG LG J L L M KKM ML > D >J LG E D E < J LDQ L< F D@< F DC G . GE> QGMHJ > J.
Jumping Around
LMLGJ D K < K F < LG MF>GD< F KL HK, GF K L GF D < F LGGC K J > J F , KC HH F JGMF< O L GML J < F >JGE FF F
LM DDQ O KL L E K QGM LJQ LG H C MH L H K QGM E KK JGE KL JL LG F
8/11/2019 Learn Rails
30/195
< >> MDL F< FLJG MJ L GF KKM K. NLL F DK LG JMF GF FJGE GL J HD L>GJEK, KM K ' N GJ J GEE F< L GFK >GJ F , GJ FFL J L < < N DGHE FL FN JGFE FL. K J KG>L
HHD L GFK L L GE F L PL < LGJ O L M DL- F LGGDK KM< N DGH JK D C ' LBJ FK M Q* F , AHL F LM< G , GJ GEG
8/11/2019 Learn Rails
31/195
Terminal
GM\DD F < F HHD L GF DD < GFKGD GJ L JE F D EMD LGJ GEHML J\K GEE F< D F . DD L GEE F< D F Lshell MK L K L GML
L GH J L F KQKL E\K FL JF D E F KEK (O O DD Lkernel).
F * , QGM F MK LJE F D HHD L GF. PH J F < < N DGH JK G>L FLG L EGJ HGO J>MDJE2 HHD L GF.
GEE F< F J K GMJKPHD FKGO LG D MF L JE F D HHD L G.
> QGM N F\L MK < L GEHML J\K GEE F< D F FL J> ( ) >GO L GEE F< F J K GMJKLG GE GE>GJL D O L F P K DD
MF QGMJ L JE F D HHD L GF FGO.
JQ GML L L JE F D HHD L GF Q FL J F K DD GEE F * JGKG>L GJ< G
< N DGH JK < L > D K O L K EHD L PL < LGJK F< JMF HJG J EK F N LG J E E J L GEE F , HJG J EE JK N J L < N JQL F L L QGM MK GF QGM
31
http://en.wikipedia.org/wiki/Terminal.apphttp://www.iterm2.com/#/section/homehttp://cli.learncodethehardway.org/book/http://cli.learncodethehardway.org/book/ex1.htmlhttp://cli.learncodethehardway.org/book/http://cli.learncodethehardway.org/book/http://cli.learncodethehardway.org/book/ex1.htmlhttp://cli.learncodethehardway.org/book/http://www.iterm2.com/#/section/homehttp://en.wikipedia.org/wiki/Terminal.app8/11/2019 Learn Rails
32/195
G#00'+% Fa+!5
> QGM O L PH J F < < N DGH JK L OGJC, QGM E Q K L J GFDGLK G> F>GJE L GF K GOF F L HJGEHL. GM\DD K L KL LMK, M
EK L GJ M Q N JK GF. * FQ < N DGH JK J HD L KL F< J L >MF L GF D LQ. A > F
J IM J K KGE F P KC DDK LG FKL DD. GF\L OGJJQ GML LL F > F> MDL KL H F D JF F DK
L KH > GF> MJ L GF G> QGMJ GEHML J. L GN J L K MEH FGE K KQ.
>G MK G> L K GGC K D JF F DK, FGL FKL DD F M Q, KG J < D , \E G F LG N QGM D FCK LG JL D K L L O DD DH QG
Ma! OS X
L K JL D >GJ FKL DD L GF FKLJM L GFK:
Install Ruby on Rails Mac OS XInstall Ruby on Rails Mac OS X
U 1+01 L'+14
L K JL D >GJ FKL DD L GF FKLJM L GFK:
Install Ruby on Rails UbuntuInstall Ruby on Rails Ubuntu
H /0#" C * 10'+%
LJGMK. GK JGOK J- K < < N DGHE FL FN JGFE FL. LJGMK. G K >> QGM N > KL JG < F< GFF L GF LG L FL JF L, L K K QGM
< N DGH F DK GF F QGM N M Q GF * GJ FMP MK L LJGMK. G GKL < FN JGFE FL HJG
F
8/11/2019 Learn Rails
33/195
L K JL D >GJ FKL DD L GF FKLJM L GFK:
Install Ruby on Rails Nitrous.ioInstall Ruby on Rails Nitrous.io
W'+" 3/
L\K KL LG MK LJGMK. G ( GN ) > QGM J GF F HJG> KK GF D < N DGHE FL K FGL QGMJ
O DD F LG L C F GF GF> MJ L GF KKM K, QGM F LJQ D
L K JL D >GJ FKL DD L GF FKLJM L GFK:
RailsBridge InstallfestRailsBridge Installfest
GL L L L K GGC F DM< K FKLJM L GFK >GJ MK F *, L M QK FGL N D D >GJ FGDDGO L LMLGJ D; J > J LG * (L GM L K LL J LG KO L LG LJGMK. G).
Understanding Version Numbers
DK >GDDGOK GFN FL GF F E JKL FME J < FGL K major version( DK 4)U K GF< FME J < FGL K minor release( DK 4.0)
U L J< FME J < FGL K patch level( DK 4.0.1)
A E GJ J D K F DM< K F O > LMJ K, F DM< F F K O JGEH L D LQ. L E FK KO L F >JGE DK 3.2 LG DK 4.0 O DD
J OJ L G> DK 3.2 HHD L GF.
A E FGJ J D K FLJG LMJ K ML P K M K ML LM
Ruby 2.0 and Rails 4.0
C L L HHJGHJ L N JK GFK G> M Q F< DK J FKL DD < FFN JGFE FL. GM\DD F
8/11/2019 Learn Rails
34/195
U DK E (N JK GF 4.0 GJ F O J)
H F QGMJ L JE F D HHD L GF F< FL J:
$ ruby -v
GM E L K :
ruby ruby-2.0.0-p247 (...)
GM\N GL M Q N JK GF 2.0.0, H L D N D YH247Z ( M Q N JK GFK P < K F L K O K OJ LL F. > QGM > F< QGM N
E FGJ J D K ), C >GJ F O J N JK GF G> L K LMLGJ D. * FGJ > L
GM F C >GJ LMJJ FL N JK GF G> DKJ .
> QGM J JMFF F GD< J N JK GFK G> M Q GJ DK GF QGMJ GEHMLN JK GFK LG NG < MF PH L < HJG D EK.
*
HJGE K < L L L K GGC OGMD< FLJG< N DGH JK. F G> L EGKL EHGJL FL ML D L K QGM\DD F < F K L< N DGHE FL FN JGFE FL K *, LM Q JK GF * F J.
* D LK QGM KO L LO F < >> J FL N JK GFK G> M Q. L FGO,
EHGJL FL, ML K KGGF K F O N JK GF G> M Q K J D K M Q D L J, F< KL DD KO L C LG GD< J N JK GFK
34
http://rubygems.org/gems/railshttps://rvm.io/https://rvm.io/http://rubygems.org/gems/rails8/11/2019 Learn Rails
35/195
* DKG DHK QGM E F QGMJ GDD L GFK G> EK, Q D LL F QG gemsets. EK L K L GDD L GF G> EK QGM F < >GJ KH > HJG
>J IM FLDQ; O L *, QGM F FKL DD KH > N JK GF G> DK O L DD L EK QGM F < >GJ L HJG L. F F O N JK GF G>
J L F O EK L O L L F O DK N JK GF O F QGM KL JL F O HJG L O DD KL DD N L N JK GF G> DK L F QGM\N >GDDGO < L FKLJM L GFK F L JL DFKL DD F DKF< FKL DD < *, QGMJ KK GF D DK < N DGH JK N EGJ L F GF N JK GF* E C K L KQ LG KO L .
* O DD K GO QGM D KL G> N D D M Q N JK GFK:
$ rvm list
GM F K D KL G> N D D EK LK KKG L < O L L MJJ
$ rvm gemset list
GM O DD K F JJGO L L K GOK O EK L K L N .
GM O DD K global EK L K O DD K FQ GL JK QGM N J L L J QGM\N OGJC < GF > O DK HHD L GFK, QGM\DD K K N JQGM J MK F * F L O Q EGKL < N DGH JK QGM J < L K GML *
JM Q GJ J FN; < N DGH JK DGN LG GEH J L E J LK G> L J LGGKMHHGJL
8/11/2019 Learn Rails
36/195
Project-Specific Gemset
GJ GMJ D JF-J DK HHD L GF, O \DD J L HJG L-KH > L EK L L K E F E K GMJ HHD L GF.
BQ J L F EK L >GJ GMJ LMLGJ D HHD L GF, O \DD KGD L LL EK O F < >GJ L K HJG L. L J QGM MK * GJ FGL J ML K O DD FLJG YK F< GP F Z ( KGD L F ) Q
FN JGFE FL KG QGM F NG < GF>D LK EGF HJG LK.
A>L J O J L L HJG L-KH > EK L, O \DD FKL DD L DL K GEE F
8/11/2019 Learn Rails
37/195
HL J 8
J L L AHHD L GFF HJ N GMK HL JK QGM\N F < GF HLM D C JGMFJGE L K LMLGJ D FLG QGMJ GEHML J. GME F , ML J DDQ, M D< F OGJC F HHD L GF K L GFDQ O
EGKL G N GMK O Q K LG GHQ F< H KL >JGE L K LMLGJ D FLGQGM J J < F L K GF QGMJ GEHML J (FGL L D L GJ HJ FL < H K
JJGJ-HJGF ML QGM\DD N GG< GHHGJLMF LQ LG P E F L G QGOGJL O D HHJG MK QGM\DD GE EGJ > E D J O L L
F< H KL F .
GF\L > D K Q GML GHQ F G< ; L\K GO QGM O DD D JF. GJC FDGL G> L E GHQ F G< >JGE GL JK. AL > JKL, QGM O DD GHQ DGL
HJG> F Q, QGM O DD GHQ G< F< < HL L, EGJ PL FK N DQ K KC DD. FDQ O F QGM\N F OGJC F >MDDL E K G< J >GJ EGFLQGMJK D> OJ L F G< >JGE K J L ; N F L F, O F QGM F GMFL J FKL DD DGGC >GJ G< P EHD K LG GHQ F< < HL.
Starter Applications
DK HJGN < K framework; L L K, KG>LO J D J JQ L L HJGN < K ML D
GJ F R F HJ F HD K LG DDGO MK LG M D< GEHD P O HHD LO \< N LG G< N JQL F >JGE K J L . DK N K MK L KO K L K.
L DD, L >J E OGJC LMJ K O F < >GJ EO K L K. GJ P EHD , O E L O FL MK JK LG J KL J >GJ F GMFL O K L (YMK J E F E FL F< ML FL L GFZ). E L O FL LGMJ O K L LG MKL GJ L KL F , >GJ P EHD ) GJ > D G> GMJ HHD L GF ( O LL J BGGLKLJ H). N DGH JK G>L F E P E C MKLGE R < DK KL C.
37
8/11/2019 Learn Rails
38/195
N DGH JK G>L F MK starter application FKL < G> KK E D F F HHD L GFGM E L DD L K YL EHD L Z ML O MK L L L JE LG J > J LG Lview filesL L GE F
* O L M Q G< LG F J L O H K. *GKL PH J F < < N DGHEGJ KL JL J HHD L GFK L L K N L E O F FF F F O HJGDKAHHKHJG LO K D MF < LG HJGN < GH F KGMJ KL JL J HHD L GFK KG
GDD GJ L GF L J KL JL J HHD L GFK F< NG < KC DD O L L K LMLGJ D, QGM E L MK L DKAHHK KL JL J H
HHD L GF O L > LMJ K D C ML FL L GF, ML GJ R L GF, F
GJ FGO, O \DD F O L L DK < > MDL KL JL J HHD L GF.
Where Are You?
F L K LMLGJ D, L L JEK Y>GD< JKZ F< Y< J LGJ KZ E F L K E
F Ppwd GEE F< K GOK L YHJ K FL OGJC F < J LGJQ,Z O J QGM
ls GEE F< K GOK >GD< JK F< > D K F < J LGJQ.
K L F Pcd GEE F< LG F < J LGJ K.
C EGE FL LG L FC GML O J GF QGMJ GEHML J QGM\DD D K. GM E Q N documentsdocuments >GD< J. GM GMD< E C K E D J >GD< J F E projectsprojects GJcodecode GJ workspaceworkspace >GJ QGMJ HJG J EE F HJG LK. K L F Pmkdir GEE F< LG J L>GD< J GJ J L L O L QGMJ > D JGOK J.
L\K PHDGJ Lrails new GEE F< F< L KL JL < M D< F L LMLGJ D
Rails New Command
DK HJGN < K Lrails new GEE F< LG J L K DK HHD L GF.
DJ EK L MK F *. * C KMJ L
$ rvm use ruby-2.0.0@learn-rails
JKL, D L\K K GMJ GHL GFK. QH :
$ rails new --help
GM\DD K DH E KK L L K GOK DD L GHL GFK >GJ L YJ D
L\K EHGJL FL LG CFGO L L DH E KK K J N D D >GJ DK
38
http://railsapps.github.io/http://railsapps.github.io/http://railsapps.github.io/http://railsapps.github.io/8/11/2019 Learn Rails
39/195
GM\DD K KMEE JQ G> L GEE F< KQFL P:
Usage:rails new APP_PATH [options]
GM\DD K D KL G> GEE F< GHL GFK F< F PHD F L GF G> O L LO DD Q,Z K L F E G> QGMJHH J F QGMJ G< K L F E G> L HHD L GF. YJ DK F OZ
< J LGJQ (HJG L >GD< J) F< F J L K KM >GD< JK F< > D K O L
> DD L GHL GFK, L GFDQ GF O \DD MK J L FGO K L-T
GHL GF O L DDK L F OZ GEE F< FGL LG F J L K L G> > D K >GJ LTest::Unit L KL F >J E OGJC. KP EHD G> MKLGE R F GMJ DK KL C. F LK < > MDL GF> MJTest::Unit
L KL F >J E OGJC. C E FQ DK < N DGH JK, L DKAHHK HJG>J E OGJC FKL GJ L L.
Building the ApplicationG J L L DK < > MDL KL JL J HHD L GF, LQH :
$ rails new learn-rails -T
K O DD J L F O DK HHD L GF F E < YD JF-J DK.Z
GM E Q N L HH < >> J FL F E > QGM J M D< F L >GJ FGLMLGJ D, O \DD KKME L F E K YD JF-J DK.Z L O DD K N QGM
K L -T >D LG KC H KL:: F L > D K. L J F L LMLGJ D, O \DD J E OGJC KG O D
rails new GEE F< O DD J L F F >GD< JK F< 53 > D K.
L O DD FKL DD 44 EK FLG QGMJ EK L.
A>L J QGM J L L HHD L GF, KO L LG LK >GD< J LG GFL FMHHD L GF:
39
8/11/2019 Learn Rails
40/195
$ cd learn-rails
K K QGMJ HJG L < J LGJQ. L K DKG DD < L HHD L GF
QH L ls GEE F< LG K GO L >GD< JK F< > D K F < J LGJQ. GGF GML G> L K >GD< JK F< > D K.
Setting ** N K MK GFN F FL L F IM LG E C KMJ O J DO QK MK
O F O FL J L HJG L < J LGJQ. L O DD J L D K LG EK L. FL J L K GEE F< LG J L L
$ rvm use ruby-2.0.0@learn-rails --ruby-version
> QGM K Y : EK L [D JF-J DK\ D K, .ruby-version.ruby-version F< .ruby-gemset.ruby-gemset , L L K LN JQ L E Ocd LG L HJG L < J LGJQ. L GML L K LOG DJ E E J LG FL Jrvm use ruby-2.0.0@learn-rails N JQ L E QGM KL JL OGJC GF QGM
>L J DGK F L GFKGD .
GM F GF> JE QGM\N J L < L LOG D K:
$ ls -1pa./
../.gitignore
.ruby-gemset
.ruby-versionGemfileGemfile.lockREADME.rdocRakefileapp/bin/
config/config.ru
40
8/11/2019 Learn Rails
41/195
db/lib/log/public/tmp/vendor/
Y Z >D F L F Pls -1pa GEE F< < KHD QK D K. O L MDD KLGH) L L FF F G> L > D F E . G.ruby-gemsetF< .ruby-version .
GM\DD DKG K LOG YKH D > D KZ O J FGL > D K L DD:
U ./ W F D K L L J HJ K FLK L MJJ FL < J LGJQ
U ../ W F D K L L J HJ K FLK L H J FL < J LGJQ
L\K J > < N JK GF FLG F P; D L\K LJQ JMFF F GMJ F O DK H
Test the Application
GM\N J L < K EHD < > MDL O HHD L GF. L\K J
8/11/2019 Learn Rails
42/195
V'#3'+% '+ 0 W# B 3/#
G K QGMJ HHD L GF F L GF, GH F O JGOK J O F MDL F>GJE L GF H .
Wa0!&'+% L % M#//a%#/
GL L L E KK K K JGDD F L GFKGD O F MDL O H .
H F L > D log/development.loglog/development.log F< QGM\DD K L K E E KK K. F J IM KLK LG L BJ C O K JN J, < FGKL E KK K J OJ LL FL log/development.loglog/development.log > D . K < FGKL E KK K J F EHGJL FLLJGM D K GGL F O F QGM J < N DGH F .
GM F C H EGJ L F GF L JE F D O F
8/11/2019 Learn Rails
43/195
J \K KGE < K. H F O F QGMJ K
F QGMJ L JE F D HHD L GF. H GF L < O FGJ FL J(D Ccd GJ ls ) F< FGL J L JE F D O FGJ JMFF F Lrails server GEE FMD LG D N L > D JGOK J H F D GH F LG
< J LGJQ; GL JK < L > D JGOK J H F D LG K N KH .> QGM N FGM K J F KH , D N QGMJ O JGOK J GH F F< H< LGJ. > QGMJ K J F KH K D E L
8/11/2019 Learn Rails
44/195
HL J 9
JC F LJM LMJ\N J L < L < > MDL DK KL JL J HHD L GF.
rails new GEE F< K J L < HJG L < J LGJQ >GJ MK.
L K H JC F KLJM LMJ >GJ GMJ G< . FD C F GJ< F JQ H JC F KLFQO J QGM D C , L K J K KK F < H JC F . GM N LG H
HD . K K DK, O J GFN FL GF J F K GJ< J LG L < N DGHE
K L F Pls GEE F< LG D KL L GFL FLK G> L HJG L < J LGJQ. L L K GOK KM < J LGJQ (E JC < O L KD K ), O \DD QGM\J F L HJG L < J LGJQ, LQHopen . . H J G< (GJ Y
8/11/2019 Learn Rails
45/195
GM\DD D JF EGJ GML > D F< >GD< J K QGM HJG < L JGMKL JL JKL < K J K L > D K F< >GD D K F< >GD< JK L
Important Folders and Files
K >GD< JK F< > D K J EHGJL FL LG FF JK.
E> D KLK DD L EK MK < Q L HHD L GF.
E> D .DG C KLK E N JK GFK F< < H F< F K.
A * .JGJ GD< JK F< > D K.
GF> / GF> MJ L GF >GD< JK F< > D K.
< / L K >GD< JK F< > D K.
HM D / D K >GJ O H K L L GD< JK F< > D K J EHGJL FL LG DK ML FGL EHGJL FL LG
C > D J L N K >GJ L C ML D LQ HJG J E.
F/ GD< J >GJ F JQ ( P ML D ) HJG J EK.
GF> .JM GF> MJ L GF > D >GJ C ( KG>LO J D J JQ >GJ O K JN JK
D / GD< J >GJ E K DD F GMK M Q G< .
DG / GD< J >GJ HHD L GF K JN J DG > D K.
LEH/ EHGJ JQ > D K J L < O F QGMJ HHD L GF K JMFF F .
N FGJ M Q KG>LO J D J J K L L J FGL EK.
The App Directory
C L E LG D JGOK J. GM F DKG MK QGMJ L PL < LGJ. J QGM F
8/11/2019 Learn Rails
46/195
$ cd app$ ls -1passets/controllers/helpers/mailers/models/views/$ cd ..
FL J L HH >GD< J, D KL L GFL FLK, F< L F MK Lcd .. GEE F< ( F< J LGJQ < N DGH F DK HHD L GF HH FK F L app/ app/ >GD< J.
JD J O < K J < DK K Y K L G> > D K GJ F R < O L KHKLJM LMJ K L K E >GJ N JQ DK HHD L GF. app/ app/ < J LGJQ K GG< P EHDK P >GD< JK F L app/ app/ < J LGJQ J L K E F N JQ DK HHD L GF.
GDD GJ L O L GL J DK < N DGH JK, HJGN < F GFK KL F Q
GM E Q J DD GMJ JD J < K J HL GF G> DK >JGE L H JKH LL K >GD< J, QGM\DD K N < F G> LEG< DWN OW GFLJGDD J< K F H LL JF. J >GDF E < models/ models/ , views/ views/ , F< controllers/ controllers/ F>GJ L KG>LO J J L L\K YK H
GF JFKZ F< EH JL KLJM LMJ LG GMJ G< . AK QGM M D< L HHDJGD G> L * GEHGF FLK F J L J < L D.
OG >GD< JK, mailers/ mailers/ F< helpers/ helpers/ , HD Q KMHHGJL F JGD K. E D JK >GD< J K >GJ G< L L K FGD< J K >GJ DKview helpers , KF HH LK G> J MK D G< L L FL J, O F O D JF EGJ GMLviews , O \DD K Q N O DH JK J D C YE JG
K GJL GEE F< FLG DGF J KLJ F G> * L K F< GFL FL.
AK DK < N DGH J, QGM\DD KH F< EGKL G> QGMJ L E F N L F LQGM J L F< < L > D K. AF< MK DK HJGN < K GFK KL FL> F< QGMJ O Q GF FQ MF> E D J HJG L.
46
http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controllerhttp://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller8/11/2019 Learn Rails
47/195
HL J 10
E J N D O L LGO L L O \N DGGC < L GMJ DK HJG L < J LGJQ >JGE L N OHF< KG>LO J J L L, D L\K GFK < J L N OHG FL G> L L E LJ
K HL J O DD FLJGLO Jsource control , DKG DD JKL K L, L GF HKGJL F QGMJ KG CK. BML L E C K HJG> KK GF D KG>LO J < N DGHE
L K KK FL DDQ >GJE G> L E LJ N D.
G MF< JKL F< L E LJ N D, O F < LG MF< JKL FLO J < N DGHE FL. CFGO GML KL L K G> E LL J. L J F
E F E F O L MLLGF L L, L E L K HJ KK LO J HJG J E K KL LF HJG J E J N K F FHML, L LJ FK L GFK >JGE GF KL L LG F
D L KO L , L J \K FG F- LO F. L GJ < JC. , D IM LO J G< , L J \K DGL G> F- LO F. DGGC L FLQH JJGJK F< O E C GJJ L GFK. AK ME FK, O KH F< DGL G> L EMF< L JE F < KL L . F K N GMJ OGJC L FQ L E , ML O E Q KMF> F K < G< L L L F, O L LG HG FL O \N > P < DD GMJ JJGJK F< GMJ G< JMFK. O FL LG HJ K JN L
L\K O F O F < N JK GF GFLJGD KQKL E.
A N JK GF GFLJGD KQKL E LO J HHD L GF\K YY N Z GEE F GMJ > D K. L DKGFGL L L < K J K L OGJC O \N F < LOLG L H KL K KK FL D MK O G>L F E C E KL C K GJ > DK KHG FL O J O CFGO L F K O J OGJC F GJJ LDQ.
L GML L E LJ N D LG L >MLMJ ? >L F O F < LG LJQ GML G O D C O L O \NGMJ J F , O F E J L FLG L E F LJMFC G> GMJ KG>LO J HJG
FD C L E LJ N D F L EGN K, O F\L LJ N D C LG FQ J LJL E . F GFDQ LJ N D LG H KL GJ >MLMJ KL L K O \N E JC < K KOGJC FLG L J HGK LGJQ.
47
8/11/2019 Learn Rails
48/195
Git
L FMP GH J L F KQKL E.
FD C JD J N JK GF GFLJGD KQKL EK, L K < D >GJ O < -K DKG>LO J < N DGHE FL. GE F < O LL M , L YKG D G< F Z O K L , L
KQ LG K J F< E J G< . F QGM OGJC O L GL JK GF HJG L,commitmessages(L FGL K L L GEH FQ QGMJ KF HK GL) G>> J F JJ L N HJG L. DD-OJ LL F GEE L E KK K < K J QGMJ OGJC LG G-OGJ
GDD GJ LGJK.
L M \K KMHHGJL >GJ forking(E C F QGMJ GOF GHQ G> J HGK LGJQ) E C K L C KGE GF DK \K HJG L F< EG< >Q L O L GML EH L F L GJ
F MKLGE R F GH F KGMJ HJG L >GJ QGMJ GOF F LMJ LG F GH F KGMJ HJG L F< KM E L pull request>GJ L HJG L E FL F J
QGMJ OGJC LG L GJ F D. P F M K (D J GJ KE DD) F< HJG LK J GO QGM M D< QGMJ J HML L GF F L DK GEEMF LO K GOK DD QGMJ GEE LK, GL LG HM D HJG LK F< QGMJ G
EHGJL FL L F QGMJ J KMES O F HGL FL D EHDGQ J GFK < JK K GOK L J D OGJC QGM N QGM F< GOGJC J J OGJCK E G< K , QGM F E C J F >GJ QGMJ F K GDD < O L QGMJ GOGJC JL GF>D L KG QGM F J KGDN L GDD K GF >GJ GEHD L F L
ADD L HGO J G> L GE K L HJ . L K < >> MDL >GJ FFE FQ G> LK HJG MF LEHGJL FLDQ, QGM EMKL L LG CFGO L > QGM HD F LG KK GF D GJ G Q KL.
B >GJ K GO QGM L GEE FGJ L J MK >MD >GJ GDD M K O G JGE
48
http://en.wikipedia.org/wiki/Git_(software)https://github.com/http://www.git-tower.com/http://list.ly/list/FO-mac-git-clientshttp://list.ly/list/FO-mac-git-clientshttp://www.git-tower.com/https://github.com/http://en.wikipedia.org/wiki/Git_(software)8/11/2019 Learn Rails
49/195
L GM L K J F F< L GEE F E D J O L L K K.
B >GJ QGM JKL KL H, E C KMJ L K FKL DD < GF QGMJ GEHML J:
$ which git/usr/local/bin/git$ git versiongit version ...
> L K FGL >GMFJGE *GF > B DQ E F .
Is Git Configured?
* C KMJ L CFGOK O G QGM J . N JQ L E QGM MH< L QGMJ L J Hgit commit GEE FQ QGM K L ML GJ G> L F K
$ git config --get user.name$ git config --get user.email
GM K GMD< K QGMJ F E F< E D MJ L:
$ git config --global user.name "Real Name"$ git config --global user.email "[email protected]"
K QGMJ J D F E KG H GHD O DD KKG L QGM O L QGMJ OGJC OD > . J \K FG J KGF LG MK D N J F E MFD KK QGM N KGE L
K L K E E D
8/11/2019 Learn Rails
50/195
PL F< F L L E LJ N D J F DG Q, F L D R F L J HGK LGJQ L L E E F .
git init GEE F< K LK MH L J HGK LGJQ ( YJ HGZ) F L HJG LL F P KQE GD L L F< L K L K GMD< F L D R < F L M
$ git init .
Initialized empty Git repository in ...
L J L K GD< J F E < .git/ .git/ F L HJG L < J LGJQ. GM F H C L
ls -1p .gitHEADconfigdescriptionhooks/
info/objects/refs/
ADD L GEE F D K L E QGM JMF Lgit commit GEE F D K FK < L GD< J ( D K GMD< F DM< < F L KF HK GL. J J KGE L
FGJ D K J L < Q L O K JN J
U < L K > D K
U GF> MJ L GF > D K L L F DM< H KKOGJ D K. A D F L HJG.gitignore.gitignore F KH >Q D KL G> > D K L L J F N J K F Q L. rails new GEE F D O L < > MDLK L L F DM< DG > D K F< < L MJ L GF > D K L L F DM< K J LK, O \DD MH< L L .gitignore.gitignore > D .
C DGGC L L GFL FLK G> L .gitignore.gitignore > D . MK L F Pcat GEE F< LG < KHDL GFL FLK G> L > D :
$ cat .gitignore# See http://help.github.com/ignore-files/ for more about ignoring files.
50
8/11/2019 Learn Rails
51/195
## If you find yourself ignoring temporary files generated by your text editor# or operating system, you probably want to add a global ignore instead:# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config./.bundle
# Ignore the default SQLite database./db/*.sqlite3/db/*.sqlite3-journal
# Ignore all logfiles and tempfiles./log/*.log/tmp
GJ .gitignore.gitignore > D L L FGJ K EGJ , K FP EHD . L FGJ > D>JGE L DKAHHK
HJG L.
Git Workflow
GMJ OGJC>DGO O L L O DD EGN L JGM >GMJ < KL F L H K K K
U+0 a!(#" F')#/
> JKL H K K Y< JLQZ KL L G> MFLJ C < F< F < > D K, git status GEE F< D KLK DD >GD< JK GJ > D K L L J FGL C < FL
$ git status# On branch master## Initial commit## Untracked files:# ( use "git add ..." to include in what will be committed )## .gitignore# Gemfile# Gemfile.lock# README.rdoc# Rakefile# app/# bin/# config.ru# config/
51
https://github.com/RailsApps/rails-composer/blob/master/files/gitignore.txthttps://github.com/RailsApps/rails-composer/blob/master/files/gitignore.txt8/11/2019 Learn Rails
52/195
# db/# lib/# log/# public/# vendor/nothing added to commit but untracked files present (use "git add" to track)
J L git status GEE F< L DDK MK L L O N E FQ MFLJ C < > D K. F O > D K F< L Q J K N < GF L GEHML J\K J< < KC ML FGL FL L J HGK LGJQ.
S0a%'+%
GJ< F > D K F L L J HGK LGJQ L C K LOG KL HK: KL F F< L E K O F QGM F E FQ > D K L GF . GJ P EHD , QGM E Q > P
J H , F< F >GJE. GM E L L FC QGM\< D C LG N L ML F K K QGM K N > D . BML L KLGJQ G> QGMJ HJG L OGGN JDQ < L D D K (YKL F
F K (Y GEE LL F Z). K N K QGM > F - J F < GFLJGD GN J LQGMJ HJG L.
GM F E JC F< N D K LG KL P K >GJ QG
> LMJ K. AHHDQ F L L E LJ N D J F DG Q, L O DD K J LG > P K > L Q J FGL E P < F O L F O > LMJ K.
*GJ G>L F, QGM\DD E JC DD L > D K LG KL > D K L L J KL <
J J L J >GJEK G> Lgit add GEE F
8/11/2019 Learn Rails
53/195
> L K EK FGFK FK D L L L GEE F L GEE F LMJ , QGM\DD D C DQ KL F< GEE L
F QGM YE C GEE LZ, QGM F DM< E KK L L < K J K LGJ L E LJ N D J, L Y GEE L E KK Z K EHGJL FL; QGM J D N
> F< QGMJ O Q FLG L H KL. GG D O DD K GO QGM DG GEE L E KK KZ ML GEEGF K FK F QGMJ M < . J L F Y> P
L D FC E D P D D LK QGM GJ L GEE L.
HJ KL F KL L G> QGMJ F O DK HHD L GF K FGO J GJ< <
MFF F git status O DD L DD QGM YFGL F LG GEE L (OGJC F < J LGJQ
GM F MK Lgit log GEE F< LG K QGMJ HJG L KLGJQ:
$ git log
> QGM L YKLM CZ Fgit log , LQHq LG J LMJF LG L GEE F< HJGEHL.
P1/&'+% 0 G'0H1
\N K F L J H K K G> L L OGJC>DGO:untracked , staged , FGMJL KL K EHGJL FL O F QGM OGJC O L GL JK: pushing LG L M . L\K DKGEHGJL FL O F QGM KK QGMJ HJG L >JGE EGJ L F GF GEHML
G>>K L CMH G> QGMJ OGJC.
J HGK LGJ K GKL < GF QGMJ L M GMFL KL D K QGMJ J< N DGH J >GJ EHDGQ JK F< < N DGH JK QGM E Q OGJC O L . N F >
53
8/11/2019 Learn Rails
54/195
GH < >JGE LMLGJ D, L K GOK QGM J K J GMK GML D JF F GFK FL GMKDQ.
< QGM J L L M GMFL? GO OGMD< GG< L E LG L J HGK LGJQ K HM D
GF\L J DM L FL LG G HM D O L F MF> F K < GJ D>- C < HJHJG LK GF L M LG OGJCK F HJG J KK.
AGJ QGMJ HJG L F< HMK QGMJ DB >GJ QGM GHQ F< H KL L GEE F L HJG L GF QGMJ DG D GEHML
> QGM N F\L MK < L M >GJ , L C KGE L E LG PHDGJ . L MLG DD GH F KGMJ DK < N DGHE FL.
GM E Q FGL L L L A *.rdoc.rdoc > D K MLGE L DDQ F GJHGJ L < FG> L HJG L J HGK LGJQ GF L M . GJ GMJ F PL KL H, O \DD MH< LGEE L L LG L DG D J HG, F< HMK L MH LG L M .
The A *F F L A * > D K GG< O Q LG HJ L O L L. L\K DK
L A * > D O F N J QGM J L F O HJG L. L\K KQ LG F DD LLD HJG LK L L QGM\N MKL KL JL MDL< K HD F D F J >. 'MKL KL L QGMJ FL FL GFK F< CFQGM\N GJJGO D A *.rdoc.rdoc F< J HD L GFL FLK:
Learning Rails==
54
https://github.com/repositories/newhttps://github.com/YOUR_GITHUB_ACCOUNT/learn-railshttps://github.com/YOUR_GITHUB_ACCOUNT/learn-railshttps://github.com/repositories/new8/11/2019 Learn Rails
55/195
Learning Rails with a tutorial from the RailsApps project.
L M D LK QGM GJE LL F MK F QGMJ G G> E JCMH KQFLPL FK GF QGM D F E :
U A * .J D . > QGM D K F < D L < F< F O, MFLJ C < A *.md.md > D K
F J L DGO. \DD KL , GEE L, F< HMK L F
$ git add -A$ git commit -m "update README"$ git push origin master
C DGGC L QGMJ L M J HGK LGJQ (J >J K L O H ). JQ K F MH< L
8/11/2019 Learn Rails
56/195
GM F J < EGJ GMLL F< DK> QGM F < EGJ F>GJE L GF GML OGJCF< L M >GJ G< KGMJ GFLJGD.
GO L L QGM\J GE>GJL D O L L, O F F MKLGE R F GMJ
56
http://railsapps.github.io/rails-git.htmlhttp://railsapps.github.io/rails-git.html8/11/2019 Learn Rails
57/195
HL J 11
EK JL G> K D L F EK K L L JL G> DK < N DGHE FL. PH
J H C K G> G< , YKG>LO J D J J K,Z L L N F < N DGH< N DGH JK. GE EK MF L GF D LQ GJ > LMJ K LG O K L . KMHHGJL F JGD , E C F < N DGHE FL K J GJ EHD E FL F K GH F KGMJ . Q J N D D L FG J F< F >J DQ GH
L K E JC G> GFGJ LG J D K E >GJ HM D MK , F< < N DGHKL D K < O F E GE K HGHMD J F< O < DQ MK D K (D C FQ GL J M Q GGJE L O L KGE < K J HL N F>GJE L GF ( F gemspecgemspec > D ), F< GEHJ KK
J N < K K F D > D . A K F D GEE F FGJ EM Q GGD GPO K L L GJ R K F< J FCK E FQ EK Q HGHMD J LQ, F< L K
MFL F >GJ MK >MD EK. L J L F L L, L K MK >MD LG KLMGJ DG HGKLK LG > F< O EK J EGKL G>L F J GEE F< DGOGJ GG D LG K O L H GHD J K Q F
E\K L M J HGK LGJQ F< C:U GO E FQ KKM K J GH F? GO E FQ J DGK
8/11/2019 Learn Rails
58/195
< DDQ, GFDQ > O GH F KKM K. F QGM > F< E L L K E FQ GJ FLDQ DGK < KKM K, QGM\N HJG DQ >GMF< E L L K FL GEE L DG , O QGM\DD > F< GF L L M HJG L H F L
MD J F< J FL L N LQ F L GEE L DG F< L K L E K
Rails Gems
DK LK D> K E L L, F LMJF, J IM J K GDD L GF G> GL J QGM DGGC L LKMEE JQ H >GJ DKGF L JM Q EK.GJ K L . F L L H , QH GLGK G> L DK GJ L E. *GJ EHGJL FLDQ, QGM\DD K D KL MK DK:
U L GFE D JW >J E OGJC >GJ E D < D N JQ F< L KL F
U L GFH C W >J E OGJC >GJ JGML F F< J KHGF< F LG O J IM KLK
U L N J GJJ E OGJC >GJ GFF L GFK LG < L K KU L N J KGMJW >J E OGJC >GJ E F HMD L F < L
U L N KMHHGJLW ML D LQ D KK K F< M Q D J JQ PL FK GFK
U MF L K EK < H F< F K K O DD. F QGM FKL DD DK, LGL D G> 44 EK JQGMJ < N DGHE FL FN JGFE FL.
Gems for a Rails Default Application
F GLN JQrails new < > MDL KL JL J HHD L GF:
U KID L 3W < HL J >GJ L L < L K
U K KK-J DKW F D K MK G> L KQFL P >GJ KLQD K LK
U M D > JW ' N J HL GEHJ KKGJ
U G>> -J DKW F D K MK G> L G>> J HL KQFL P >GJ ' N J
U IM JQ-J DKW
8/11/2019 Learn Rails
59/195
GM E Q FGL F < L < L K , >GJ KLQD K LK, M JQ GJ < N DGH JK MK L K LGGDK KG L Q J F DM< < F L < > MDL KL
Where Do Gems Live?
F QGM JMF DK HHD L GF, EK J DG < < FLG L GEHML
EE < L DQ >GJ QGMJ GOF MKLGE G< K DG < J FLDQ L F QGMJ GOF G< . L\K DD M Q G< , ODK OJGL L.
F QGM J M D< F F HHD L GF F DK, QGM D KQKL E. > QGM\J MJ GMK H JKGF, L GM ,
L EK D N .
MF L gem which GEE F< F< QGM\DD K :
$ gem which bundler/Users/me/.rvm/gems/ruby-2.0.0-p0@global/gems/bundler-1.3.5/lib/bundler.rb$ gem which rails/Users/me/.rvm/gems/ruby-2.0.0-p0@learn-rails/gems/railties-4.0.0/lib/rails.rb
EK J > D K K N < LG L GEHML J\K < KC KLGJ . > QGM MK *GD< J F QGMJ MK J < J LGJQ. A globalglobal KM >GD< J GFL FK L BMFGDDGO < L FKLJM L GFK F L Y L L JL learn-railslearn-rails KM >GD< J GFL FK L DK E. > QGM MK JM Q *, QGMJ EK O DD KLGJ < F < >> J FL DG L GF.
GM\DD F N J EGN GJ < D L EK < J LDQ. FKL < QGM\DD E F BMF D . JD J, < K J < DK >JY E MFL J,Z L < N DGH J O G O FLK LG KK E D F HHD L GF KGMJ GEHGF FLK GJ K F > F D > D F L HHD L GF. L D KLK E L L L < N DGH J O FLK
E> D HJGN < K L F>GJE L GF F < < Q LBMF
8/11/2019 Learn Rails
60/195
EK L L O DD MK < Q L HHD L GF, F< L Gemfile.lockGemfile.lock > D , O L LK D KL G< H F< F K F< N JK GF FME JK, QGM N GEHD L KH > LJ IM J < LG JMF L HHD L GF. *GJ EHGJL FLDQ, O F GL J < N DG
HHD L GF, BMF DDGO < N DGH JK (GJ QGMJK D>) >JGE EK, QGM F KH >Q E N JK GF FME J >GJ FQ E F L E> D
> F - J F < GFLJGD GN J JMD K >GJ MH< L F :
U gem 'rails', '4.0.0' K Y KGDML :Z GFDQ N JK GF 4.0.0 O DD MK 4.0
E FK MK FQ N JK GF J L J L F 4.0 F< D KK L F 5.0 ( FQ E FGJ N J
F F J D, GJ < N DGHE FL.
L\K L C DGGC L L E> D J L < Q Lrails new GEE F
8/11/2019 Learn Rails
61/195
gem 'sass-rails' , '~> 4.0.0'
# Use Uglifier as compressor for JavaScript assetsgem 'uglifier' , '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and viewsgem 'coffee-rails' , '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript librarygem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more:https://github.com/rails/turbolinksgem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuildergem 'jbuilder' , '~> 1.2'
group :doc do# bundle exec rake doc:rails generates the API under doc/api.gem 'sdoc' , require : false
end
# Use ActiveModel has_secure_password# gem 'bcrypt-ruby', '~> 3.0.0'
# Use unicorn as the app server# gem 'unicorn'
# Use Capistrano for deployment# gem 'capistrano', group: :development
# Use debugger# gem 'debugger', group: [:development, :test]
> JKL D F ,source 'https://rubygems.org' , < J LK BMFGJ FQ EK.
GL L L L K GF< MF GEE FL < D F < J LK BMFQ O N JK GF G> DK O>J IM FLDQ F< F O J N JK GFK E Q FGL OGJC K O PH L.
L\K DKG O K LG KH >Q L M Q N JK GF O \J MK F . K K F< HDGQE FL K J HLK KM K L GK MK < Q JGCM. F
8/11/2019 Learn Rails
62/195
F L E> D QGM\DD K L EK >GJ DK < > MDL HHD L G< K J < JD J. L J EK J GEE FL < GML (L D F K F O L
K J KM KL GFK F< O F FGJ L E GJ J EGN L E.
OGF\L MK < L K >GJ GMJ HHD L GF ML O \DD C H Lgem 'sqlite3' FLJQ.GF> MJ F DK >GJ FG < L K K GEHD L MD GFDQ O F MK Frake doc:rails GEE F< LG F J L A QGM J < N DGH F QGMJ HHD L GF GF GEHML J MK F L E Q F < LG MF GEE FL F< MK L KL L E FLgem 'therubyracer', platforms: :ruby . FMP 4.0.0'gem 'uglifier' , '>= 1.3.0'gem 'coffee-rails' , '~> 4.0.0'
gem 'jquery-rails'gem 'turbolinks'gem 'jbuilder' , '~> 1.2'
Adding Gems
\N < FL > < K N J D EK L L O DD MK >MD >GJ GMJ LMLGJ D
D JF < G> L K EK >JGE N J LQ G> < >> J FL KGMJ K:
U M Q GGD GP
U DK KLK
U M Q DGO
U N J GMK DG HGKLK
U P EHD G< F< KL JL J HHK GF L M
U J GEE F< L GFK >JGE GDD M K
62
http://ruby-toolbox.com/http://railscasts.com/http://www.rubyflow.com/http://www.rubyflow.com/http://railscasts.com/http://ruby-toolbox.com/8/11/2019 Learn Rails
63/195
\J GMJ < N DGHE FL HJG KKCFGO O EK O \DD F L F < K GN JL E LG L E> D < N DGHE FL.
J J EK O \DD D :
U L N J GJGJ F< ' N J HLU > JGW GF> MJ L GF >J E OGJC
U GFW KK LG L * D EH A
U GG D GJ KL L H K D C Y GMLZ
U K EHD >GJEW >GJEK E < KQ
\DD DKG GDDGO F :
GemfileGemfile
source 'https://rubygems.org'ruby '2.0.0'gem 'rails' , '4.0.0'
# Rails defaultsgem 'sqlite3'gem 'sass-rails' , '~> 4.0.0'gem 'uglifier' , '>= 1.3.0'gem 'coffee-rails' , '~> 4.0.0'gem 'jquery-rails'gem 'turbolinks'gem 'jbuilder' , '~> 1.2'
# learn-railsgem 'activerecord-tableless'gem 'bootstrap-sass'gem 'figaro'gem 'gibbon'gem 'google_drive'gem 'high_voltage'gem 'simple_form' , '>= 3.0.0.rc'group :development do
63
https://github.com/softace/activerecord-tablelesshttps://github.com/thomas-mcdonald/bootstrap-sasshttps://github.com/laserlemon/figarohttps://github.com/amro/gibbonhttps://github.com/gimite/google-drive-rubyhttps://github.com/thoughtbot/high_voltagehttp://simple-form.plataformatec.com.br/https://github.com/charliesome/better_errorshttps://github.com/evrone/quiet_assetshttps://github.com/evrone/quiet_assetshttps://github.com/charliesome/better_errorshttp://simple-form.plataformatec.com.br/https://github.com/thoughtbot/high_voltagehttps://github.com/gimite/google-drive-rubyhttps://github.com/amro/gibbonhttps://github.com/laserlemon/figarohttps://github.com/thomas-mcdonald/bootstrap-sasshttps://github.com/softace/activerecord-tableless8/11/2019 Learn Rails
64/195
gem 'better_errors'gem 'quiet_assets'
end
GL L L O \N HD < L LL J JJGJK F< IM L KK LK EK FH >Q F JGMH >GJ < N DGHE FL GJ L KL F FKMJ K E K FGL
J GGLHJ FL. DK D L QGM KH >development ,test , GJ production.
L E QGM < L L E> D , JMFbundle install F< J KL JL QGMJ O K JN J.
Install the Gems
GO L L QGM\N < L < L E> D , QGM F < LG FKL DD L J IM JGEHML J:
$ bundle install
N JQ L E QGM D , QGM\DD JMFbundle install . L N JQ E F< < H F< F Q, O L N JK GF FME JK. JGemfile.lockGemfile.lock > D ; > L K N J F JJGJ, < D L L F< JMFbundle install LG J J L L.
64
https://rubygems.org/https://rubygems.org/8/11/2019 Learn Rails
65/195
MFgem list LG K DD L EK L L J DG < < FLG L < N DGHE FL
$ gem list
D KL G> EK DG < < F L FN JGFE FL F< KH > < F L Gemfile.lockGemfile.lock O DD LK E . J \K GO L OGJCK. * E C K HD >GJ L EK LG KLGJ D J GJ JKL MK G> git push origin master , QGM F MK L K GJL MLgit push .
> QGM L E KK :
fatal: Not a git repository (or any of the parent directories): .git
L F< L K QGM J F >GD< J L L K FGL F F L D R < O L QGMJ HJG L < J LGJQ. K L F P GEE F QGM L E KK :
fatal: 'origin' does not appear to be a git repositoryfatal: The remote end hung up unexpectedly
L K GOK L L QGM F\L GFF L LG L M LG HMK L F K. G
$ git remote show origin
L K FGL KGDML DQ F KK JQ LG MK L M >GJ L K LMLGJ D. > E D J O L L OGJC>DGO G> HJG> KK GF D < N DGHE FL.
\J J MJ L HHD L GF.
65
8/11/2019 Learn Rails
66/195
HL J 12
GF> MJF GMJ LMLGJ D HHD L GF, O \DD F < LG K N F GMFL F E FJGE L HHD L GF F< K N < L LG KHJ MJ L GF > D K. L\K FGL H
GF> MJ L GF > D K, GO N J. * FQ HHD L GFK J IM J GF> MJ
E D GMFL J < FL DK GJ A C QK >GJ PL JF D K JN K.EGL L J HGK LGJ K KM K L M J HD LG KLGJ F< K
K GMD MJ L GF K LL F K L L EMKL J E F HJ N LEGKL < N DGH JK F K L FN JGFE FL N J D K MK F L F P K DL DKAHHK HJG L, O L C Q J < HHJG F< MK L> JG EL L D LK MK K
FN JGFE FL N J D K >JGE L F P K DD GJ >JGE K EHD GF> MJ
GJ GMJ LMLGJ D, O \DD K GO GO LG K L MH GF> MJ L GF K LL F K> JG E. GMF J < L JL DDK FN JGFE FL J D K> QGM\< D C D JF GML L >
PHDGJ GL J HHJG K.
Configuration File
LMLGJ D HHD L GF MK K L> JG ELG K L FN JGFE FL N J D K. \N FKL DD < L > JG E F L E> D F< JMFbundle install .
> JG E MK K F J LGJ LG K L MH L F KK JQ > D K. MF:
$ rails generate figaro:install
DK HJGN < K Lrails generate GEE F< LG MK < Q EK L L F < LG EG D K GJ FKL DD GF> MJ L GF > D K.
66
http://en.wikipedia.org/wiki/Environment_variablehttps://github.com/laserlemon/figarohttps://github.com/laserlemon/figarohttp://railsapps.github.io/rails-environment-variables.htmlhttps://github.com/laserlemon/figarohttps://github.com/laserlemon/figarohttp://railsapps.github.io/rails-environment-variables.htmlhttps://github.com/laserlemon/figarohttps://github.com/laserlemon/figarohttp://en.wikipedia.org/wiki/Environment_variable8/11/2019 Learn Rails
67/195
K F L rails generate GEE F JG E F J L K config/application.ymlconfig/application.yml > DF< D KLK L F QGMJ .gitignore.gitignore > D .
\DD K L J < FL DK >GJ QGMJ E D F< * D EH GMFLK F L config/application.ymlconfig/application.yml> D . .gitignore.gitignore > D HJ N FLK L config/application.ymlconfig/application.yml > D >JGE F K N < F LJ HGK LGJQ KG QGMJ J < FL DK J C HL HJ N L .
K QGMJ L PL < LGJ LG J HD L > D config/application.ymlconfig/application.yml O L L K:
# Add account credentials and API keys here.# See http://railsapps.github.io/rails-environment-variables.html# This file should be listed in .gitignore to keep your settings secret!# Each entry sets a local environment variable and overrides ENV variables in the Unixshell.GMAIL_USERNAME: Your_UsernameGMAIL_PASSWORD: Your_PasswordMAILCHIMP_API_KEY: Your_MailChimp_API_Key
MAILCHIMP_LIST_ID: Your_List_IDDOMAIN_NAME: example.comOWNER_EMAIL: [email protected]
HD L HD GD< JK F L config/application.ymlconfig/application.yml > D O L J D J < FL DK.
* C KMJ L J K KH >L J GDGF F< >GJ L N DM >GJ N DM GFL FK FGF- DH FME J J L JK (HMF LM L GF E JCK), QN DM F IMGL L GF E JCK. > QGM MJ L GF N DM K F L config/application.ymlconfig/application.yml > D J N D D FQO JHHD L GF K FN JGFE FL N J D K. \DD MK L FN JGFE FL N
LMLGJ D HHD L GF LG K F< E D.
G*a')
GJ L E D MK JF E F< H KKOGJ QGM GJ F GMFL O* FGDDGO FKLJM L GFK F L JL DF< E D O L DK.
Ma')C&'*
F N K LGJK K F MH LG J N F OKD LL J, O \DD GJ L * D EH A C Q:MAILCHIMP_API_KEY. G F LG * D ELG
L QGMJ A C Q. D C QGMJ F E L L LGH G> L F N L GF E FMLL F K.Z D C Y PLJ K,Z L F YA C QK.Z GM N LG F J L F
8/11/2019 Learn Rails
68/195
N QGM DJ FGL, L * D MLLGF >GJ Y J L KL.Z D KL F E F< GL J < L DK J MH LG
\DD F < LMAILCHIMP_LIST_ID >GJ L E D F D KL QGM\N J L F< * D EH Y KLKZ H , D C L YGJ E FM F< D C
GLLGE G> L Y KL LL F KZ H , QGM\DD > F< L MF IM >GJ L
D *a'+ Na*#
> QGM DJ GJ FGO. L J, > QGM
L LMLGJ D LG < HDGQ L HHD L GF LG JGCM, QGM\DD J HDexample.com O L L MF IMF E QGM\N N F QGMJ HHD L GF GF JGCM. GM\DD N LG O LCFGO L F E QGM\DD MK GF JGCM.
\DD MK L MJ E D >GJ < D
O3+# E*a')
GM\DD K F< E D E KK K LG L K
8/11/2019 Learn Rails
69/195
F L > D config/environments/development.rbconfig/environments/development.rb , F J L F< G> L > D , > F< L
config.assets.debug = true
EE < L DQ >GDDGO F , JGE L config/application.ymlconfig/application.yml > D C HK QGMJ KK > .
P# $ * D#)'2# '#/ '+ D#2#) *#+0
> QGM O FL LG K F< J D E KK K O F QGM L KL L HHD L GF EG< >Q L > D config/environments/development.rbconfig/environments/development.rb .
A>L J L G< QGM MKL F Dend C QOGJ QGM L J L > F Dend C QOGJ D O L JJGJK O F QGM KL JL L O K JN J.
L J, >L J O GJE LG L LMLGJ D HHD L GF, L K F< E D E KK K.
69
8/11/2019 Learn Rails
70/195
Git
L\K GEE L GMJ F K LG L L J HGK LGJQ.
$ git add -A$ git commit -m "add configuration"$ git push
\J J GJ L HHD L GF.
70
8/11/2019 Learn Rails
71/195
HL J 13
L L K F< GMLA DK HHD L GF F < D N J KL L O H K MKL D C F GJ KL F< FG M Q G< K J IM J GJ O PHDGJ L GEHD P L K G> GJE L GF H .
K QGMJ L PL < LGJ LG J L F< K N > D public/index.htmlpublic/index.html :
Hello World
>J K L JGOK J O FGD< J Q < > MDL.
> FG > D F E K KH > < F L , L K JN J O DD LL EHL LG Jindex.htmlindex.html . K K GFN FL GF L L < L K LG 1993; > FG > D F E O K > JKL O K JN JK N J M DL (L A LLH< K JN J) OGMD< J LMJF D< J LGJQ, MFD KK > D F E < index.htmlindex.html O K HJ K FL. F L F, index.htmlindex.html K F L< > MDL > D F E >GJ GE H .
Routing Error
L HH FK O F FG > D E L K L J IM KL < O
8/11/2019 Learn Rails
72/195
Add an About Page
K QGMJ L PL < LGJ LG J L F< K N > D public/about.htmlpublic/about.html :
About
K L L LLH://DG D GKL:3000/ GML. LEDF QGMJ JGOK J. GM\DD K L FH .
BQ L O Q, QGM\N MKL
8/11/2019 Learn Rails
73/195
GL L F E G> L HHD L GFLearnRails K F DM< < F L > D . F QGM HHD L GF, KM KL < QGM MK L F Elearn-rails . > QGM N L HJG L Q L config/routes.rbconfig/routes.rb > D GJ< F DQ.
K KF HH L G> DK JGML F G< L C K FQ J IM KL LG L HHD( LLH://DG D GKL:3000/) F< J < J LK L LG L about.htmlabout.html > D (O K PH L < LG
F L publicpublic >GD< J).
J K FG F < LG J KL JL QGMJ HHD L GF K JN J LG K L F O KL JL L K JN J:
$ rails server
K L L HLLH://DG D GKL:3000/. GM\DD K L YA GMLZ H .
GM\N MKL K F F P EHD G> DK E . GE < N DGH JK GEHD
GN J GF> MJ L GFZ HJ F HD K D C E . L\K FGL G N GMK OL publicpublic >GD< J; L MKL HH FK. > QGM GJ L G< L L E HKLLH://DG D GKL:3000/LG Lpublic/index.htmlpublic/index.html > D . G< K MJ < < H F L DK >J E OGJC. GCFGO L GFN FL GF F< L L F IM >GJ GN JJ < F L, QGM N GHGO J L QGMJ < KHGK D.
Using the About Page
\N J L < F YA GMLZ H KG O F D JF GML JGML F .
GJ L F PL HL J, O \DD MK L KL L YA GMLZ H LG FN KLOGJCK.
L J F L LMLGJ D O \DD J L F O YA GMLZ H MK F < >>
73
http://localhost:3000/http://localhost:3000/http://localhost:3000/http://localhost:3000/http://localhost:3000/http://localhost:3000/8/11/2019 Learn Rails
74/195
HL J 14
IM KL F< KHGFKGM\N GF> MJ < L LMLGJ D HHD L GF, J L < KL L H K,
JGML F .
F L K HL J, O \DD FN KL L L O J IM KL-J KHGFK Q D GFLJGDD J < K F H LL JF KG QGM\DD HJ H J < LG M D< D K >JGE O K JN JK.
JGOK JK E Crequests. A O K JN JrespondsLG J IM KL Q K F< F F *H F< F GF L < JK F L * > D , L O JGOK J E Q E C GP F< AHHD > J ML
EGKL HGHMD J. N F > QGM HJ > J GF G> L GL JK, LJQ L K F JGEDGF O L L L PL.
L JL GMJ FN KL L GF Q HMLL F JGE FLG Y F G F LG *G< Z OADL JF L N DQ, QGM F D J L JGOK J . K D JK FQ > D
< Q L JGOK J.
N DGH J GGDK O K QGMJ HJ E JQ < FGKL LGGD >GJ >JGFL< N DGHE FL, F DM< F F< ' N J HL.
F JGE GF * , HJ KK GEE F L JGOK J O F F< L E FMN DGH J/ N DGH J GGDK.
F JGE GF FGJEK, HJ KK >L- LJD- GJ K DN DGH J GGDK.
D L L LOGJC L F L N DGH J GGDK O.
F L L L J IM KL-J KHGFK Q D Q N K L F L YA GMLZ H LLH://DG D GKL:300GML. LED.
F L N DGH J GGDK O, QGM\DD K > D K J N < Q L JGOJ K GFDQ GF : Y GML. LEDZ. K K L > D L L L JGOK J N
H .
75
http://localhost:3000/about.htmlhttp://localhost:3000/about.htmlhttp://localhost:3000/about.htmlhttp://localhost:3000/about.html8/11/2019 Learn Rails
76/195
D C L Y GML. LEDZ > D GF. F D C L L Y < JK.Z L FL J J IM KL K FL LG L K JN J F< L FL J J KHGFK J N
76
8/11/2019 Learn Rails
77/195
J IM KL K GEHGK < G>:
U J IM KL ( LLH://DG D GKL:3000/ GML. LED)
U J IM KL E L G< ( )
U J IM KL < JK ( F DM< F GGC K F< K J A FL < FL > J)
J KHGFK K GEHGK < G>
U KL LMK G< (200 GJ 304 GL *G< > J)
U *
GM F K L * K FL LG L JGOK J Q D C F L J N O GJ < FGKL N O.
GO LJQ J IM KL F L GE H Q FL J F LLLH://DG D GKL:3000/.
77
http://localhost:3000/http://localhost:3000/8/11/2019 Learn Rails
78/195
GM\DD K L K JN J J LMJFK LOG > D K. > JKL, YDG D GKLZ, G*GN < JE F FLDQZ L L L DDK L JGOK J LG J IM KL L Y GML. L
K L Y GML. LEDZ > D . GM E Q K L KL LMK G< Y200 Z L J IM KL D KF\L F < F< L JGOK J K GMD< MK L > D L L K
J \K L HG FL G> L P J K : JGOK J\K < FGKL N O K GOLO F L JGOK J F< K JN J. GM\J DGGC F L N JQL F L L H
HDME F .
I+/'"# 0 S# 2#
JGOK J\K < FGKL N O
8/11/2019 Learn Rails
79/195
GM D JF < JD J L L, >JGE L H JKH L N G> KG>LO J J LGF>GJE LG LEG< DWN OW GFLJGDD JKG>LO J < K F H LL JF. K F>GJ K YGF JFKZ LG C H G< E F D F< GJ F R GJ DK.
* < K F H LL JF GJ F L < F L < K F G> < KCLGH HHD LE F HMD L < < L ; YN OZ D KK K J L < L MK J FL J> ; F< J KHGF< < LG MK J FL J L GF.
GE GEHML J K FL KLK > D L J L LMJ G> O HHD L GGJ F D * < K F H LL JF G> < KCLGH HHD L GFK. F K L
F L F PL < J E. < J E K GOK L * J L LMJ K H JL G>KL C.
AL L K G> L KL C K L O JGOK J. A J IM KL >DGOK MHO J< F GMFL JK L JGML J O < KH L K L J IM KL LG F HHJGHJ
F DK HHD L GF, L J K K F D JGML F > D , config/routes.rbconfig/routes.rb , F< EMDL HD GFLEG< DK, F< N OK.
GFK < J F L EHGJL F G> L JGML J, H J HK O K GMD< DD G* , GJ GML F - GFLJGDD J-*G< D- O, H LL JF. KH L L IM D
FGE F D LMJ , L J L LMJ K O DD MF< JKLGG< F< MK < Q DD
79
http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controllerhttp://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller8/11/2019 Learn Rails
80/195
J \K L KL H- Q-KL H O DC-L JGM G> O L HH FK.
F L O JGOK J E C K J IM KL, router GEHGF FL O DD C L config/routes.rbconfig/routes.rb> D F< < L JE F OcontrollerK GMD< FJGE model. A>L J G L F F< L , L GFLJGDD J O DD J F< J J KHGFK GE F F < L >JGE L Eview
GEHGF FL L L HJGN < K E JCMH F< D QGML. J KHGFK K F *GFLJGDD J KK E D K >GJ L JGOK J LG < KHD Q.
EG< D, N O, F< GFLJGDD J J > D K QGM J L GFL F F MJL F KLJM LMJ F< KQFL P K < GF >GMF< L GF EG< D, N O, F<
F L DK >J E OGJC. EG< D, N O, F< GFLJGDD J D KK K QGMinheritN GJ >JGE H J FL D KK K L L J H JL G> L >J E OGJC, KG QGM
OJ L QGMJK D>.
F EGKL DK HHD L GFK, modelmodel G L FK < L >JGE < L K , L GM KGEG L F < L >JGE J EGL GFF L GF LG FGL J K JN J. GJ P EHD ,
J LJ N MK J F E F< E D JGE O LL J GJ MK J\K GE LGOF >JGEGFLJGDD J F G L F < L >JGE EGJ L F GF EG< D > F KK JQ.
A controllercontroller F N EGJ L F GFaction. GJ P EHD , K J GFLJGDD J E LL GFK LG < KHD Q D KL G> MK JK, GJ JGE D config/routes.rbconfig/routes.rb > D
E L K O J IM KL LG GFLJGDD J L GF. F L KG>LO J J LL GF K methodG> L GFLJGDD Jclass. MK L L JEKaction F JK L K
Y >MDZ ( L JE L L J > JK LGJ HJ K FL L GF D KL L LJ FK> J , FGL J KG>LO J < KKLJ L GF). L\K FGL EHGJL FL LG MF< JKL F< L KLJ L HJ F HD
J G F R F L L JE F< CFGO F L L DK GFLJGDD JK N K N FKM>> FL >GJ FF JK.
A viewview > D GE F K M Q G< O L * E JCMH. QH DDQ L J O
KKG L < O L GFLJGDD J L GF L L < KHD QK H . AF FG> MK JK. A YK GOZ N O E L HJGN < < L DK G> MK J\K HJG> D . GJ< F JQ * > D K ML LQH DDQ GFL F < L F L >GJE G> M Q K M Q KL L E FLK KM K DG CK L L L J L L JGM D KLK LGYK H J L GF G> GF JFKZ HJ F HD , L K GFK < J < GG< HJ L> D K LG GFDQ < KHD Q F < L ; FQL F DK DGF K F EG< D.
GL N JQ GFLJGDD J L GF K LK GOF N O > D . F E FQ GFLJGDDdestroy L GF O DD J < J L LG L F< P N O, F D K
80
http://en.wikipedia.org/wiki/Representational_state_transferhttp://en.wikipedia.org/wiki/Representational_state_transfer8/11/2019 Learn Rails
81/195
Remove the About Page
\N F MK F L KL L YA GMLZ H LG FN KL L L J IM K
\J D public/about.htmlpublic/about.html :
$ rm public/about.html
* C KMJ QGM\N J EGN < L public/index.htmlpublic/index.html > D K KM KL < JD J:
$ rm public/index.html
GO O \DD DGGC L O QK LG EHD E FL L GE H MK F L >MDD
81
8/11/2019 Learn Rails
82/195
HL J 15
QF E GE JD J, O K O GO DK F < D N J K EHD KL L O H K.
J O \DD M D<
8/11/2019 Learn Rails
83/195
U K LGJK GFLJGDD J W L > D O DD app/controllers/visitors_controller.rbapp/controllers/visitors_controller.rb
L J O \DD K L K K GG< G MK O \DD J L K LGL O K L N K LGJ. F DK, L J K G>L F EG< D O L L K E F(L GM GFLJGDD J F MK < L >JGE EMDL HD EG< DK).
Naming ConventionsDK K H CQ GML D KK F E K F< > D F E K. L\K MK G>
GF> MJ L GFZ HJ F HD . BQ J IM J F JL F F E F H LL JFK, DGF> MJ L GF > D K.
B >GJ O DGGC L D KK F< > D F E GFN FL GFK, J \K FGL GL JE FGDG Q:
U KLJ F K K IM F G> J L JK
U QGM\J DGGC F L F P EHD G> DGO J K KLJ F K K H J L <
U L LD K E FK L J K F F L D H L D LL J F KLJ F
U E D K GFL FK H L D D LL J F L E GJ D KK F E K:
U class Visitor < ActiveRecord::Base W L EG< D D KK F E K H L D RU class VisitorsController < ApplicationController W >GJ GFLJGDD J, GE F
EG< D F E O L Y GFLJGDD JZ F E D K
J J L JMD K >GJ > D F E K. Q J DO QK DGO J K , O L OGMF< JK GJ K (KF C K ):
U L EG< D > D F E E L K L EG< D D KK F E , ML DGO J app/ app/ models/visitor.rbmodels/visitor.rb
U L GFLJGDD J > D F E E L K L GFLJGDD J D KK F E , MP EHD app/controllers/visitors_controller.rbapp/controllers/visitors_controller.rb
U L N OK >GD< J E L K L EG< D D KK F E , ML HDMJ D FP EHD app/views/visitorsapp/views/visitors
AL > JKL L JMD K E Q K E J LJ JQ, ML O L PH J F L Q O DDGML FG H L D D LL JK GJ KH K F > D F E K K LK GJ FK F
> QGM KLJ Q >JGE L K F E F GFN FL GFK, QGM\DD F GMFL J MF P>JMKLJ L GF.
83
http://en.wikipedia.org/wiki/String_(computer_science)http://en.wikipedia.org/wiki/CamelCasehttp://en.wikipedia.org/wiki/CamelCasehttp://en.wikipedia.org/wiki/String_(computer_science)8/11/2019 Learn Rails
84/195
Routing
\DD J L L JGML >GJ O EHD E FL L EG< D F< GFLJGDD J
H F L > D config/routes.rbconfig/routes.rb . HD L GFL FLK O L L K:
LearnRails : :Application .routes.draw doroot to : 'visitors#new'
end
AFQ J IM KL LG L HHD L GF JGGL (LLH://DG D GKL:3000/) O DD < J L < LG LK LGJK GFLJGDD Jnew L GF.
GL L L L F E G> L HHD L GF K GFL F < F L config/routes.rbconfig/routes.rb > D . JD J, J GEE F< < MK F YD JF-J DKZ K L F E G> L HHD L GF KG
F L G< J .
GF\L GN JDQ GF JF < GML MF< JKL F< F L P L KQFL P G> LGE > E D J KGGF F< QGM F DGGC MH L < L DK F L J > J FDK M < K: GML F >JGE L MLK < F.
F F J D, O F QGM F GF> MJ L GF > D QGM EMKL J KL JL QGO N J, L config/routes.rbconfig/routes.rb > D K F P HL GF. GM QGM F < LG KL JL L K JN J:
$ rails server
K L L HLLH://DG D GKL:3000/. GM\DD K F JJGJ E KK MK O EHD E FL < L GFLJGDD J. JJGJ E KK , YMF F L D R < GFK
E FK DK K DGGC F >GJ K LGJK GFLJGDD J F< F\L > F< L.
Model*GKL DK EG< DK G L F < L >JGE < L K . F QGM MK < Lrails generate model GEE F< LG J L EG< D L L F J LK >JGE L A L NF< CFGOK GO LG GFF L LG < L K .
MJ LMLGJ D HHD L GF F JO J L M Q D KK O L E L G D app/models/owner.rbapp/models/owner.rb :
84
http://localhost:3000/http://guides.rubyonrails.org/routing.htmlhttp://localhost:3000/http://localhost:3000/http://guides.rubyonrails.org/routing.htmlhttp://localhost:3000/8/11/2019 Learn Rails
85/195
class Owner
def namename = 'Foobar Kadigan'
end
def birthdatebirthdate = Date .new( 1990 , 9, 22 )
end
def countdowntoday = Date .todaybirthday = Date .new(today.year, birthdate.month, birthdate.day)countdown = (birthday - today).to_i
end
end
K K QGMJ > JKL DGK DGGC L M Q G< . G PH
H F E F< L L O J MK F L PL > D LG J L F KLJ L GF LL GEHML J\K E EGJQ. G>LO J J L LK DD L K KLJ L GFKobjects. F M Q,
N JQL F O J L F< E F HMD L K Fobject. G < KL F M K GF G L >JGE < > F L K class , N L class name , F< HJG J E N GJ F L >GJE G> methods.
> JKL D Fclass Owner < > F K L D KK F< KK FK F E . D KLend D F GEHD L
L D KK < > F L GF. < > F L J E L GGJ YE L G< < > F L GFZ) F< F< F end .
U def name V end
U def birthdate V end
U def countdown V end
E L G< GFL FK K EHD M Q G< L L KK FK < L LG N JL < L >GJ MK F GMJ N O > D Qinstantiating L D KK FGJ E L G< LGreturn < L O F DD
8/11/2019 Learn Rails
86/195
F KK F FQ N DM LG N J D , F DM< F string ( K J K G> J L JK L LOGJ< GJ F E ) KM K Y GG J < F.Z M Q J G F R K KLJ F O
F DGK < F K F D GJ J L GF ( float).
*GJ FL J KL F DQ, FQ M Q G L F KK F < LG N J D . JGMF G LK L L J KMHHD < O L M Q. M
J < > F < Q L M Q A (application programming interface); KK FL DDQ L AL DG G> HJ M DL D KK K L L J M D< F DG CK >GJ FQ HHD
MD >GJ O HHD L GFK. JF FQGM KL JL < O L M Q HJG J EE F ; LL F LG CFGO L A D KK KD M Q.
Date D KK K HJGN < < Q L M Q A . L K < K J < F LM Q A J > J FGJ LDate D KK ( L\K MJ < < H F L L ML M Q D F M ), O \< K L K > J EGJ GEHD P L F L K EHD < > F GJE GEHD P D F< J J
N J D Kbirthdate F< today J instancesG> L Date D KK. > O KM LJ Ltoday >JGEbirthday , L Date D KK D MD L K L FME J G> < QK J E F F MFL D
J KMDL E L >J L GF D KG O MK L ML D LQ E L GGJ KK F F L LG Lcountdown N J D .
K K F P EHD G> L HGO J G> HJG J EE F F M Q. GL L L H J J H K F< GN J 600 OGJ G< .
KLJ L GFK ( D KK < > F L GF, E L G< < > F L GF, N J D KK FF< FL J GFN JK GF) ML L Q J HJ K FL L GMK F D F K G> GEHD E FL L GF. L CFGOD < G> M Q KQFL P F< L M Q A , >G< F L PL > D N K MK E R F D LQ.
> QGM O FL EGJ DH O L HJG J EE F GF HLK F< L JE FGDG Q, JF LG JG J E Q J K F .
L\K K GO O F HML L K >MF L GF D LQ LG MK GF O H .
86
http://apidock.com/ruby/Datehttp://apidock.com/ruby/Datehttp://pine.fm/LearnToProgram/http://pine.fm/LearnToProgram/http://apidock.com/ruby/Datehttp://apidock.com/ruby/Date8/11/2019 Learn Rails
87/195
View
OF J EG< D HJGN < K L < L O O FL LG K GF L GE H .
\DD J L L E JCMH F< D QGML F O > D F< D K G F >GD< JK F L app/views/ app/views/ < J LGJQ. F LQH D HHD L GF, GF J F< J EMDL HD N OK, KG O E C >GD< J LG E L GFLJGDF O >GD< J MK F QGMJ > D JGOK J GJ L PL < LGJ. J MK L F Pmkdir GEE F D app/views/visitors/new.html.erbapp/views/visitors/new.html.erb :
Home
Welcome to the home of .
I was born on .
Only days until my birthday!
\N J L < visitors/ visitors/ >GD< J O L F L app/views/ app/views/ < J LGJQ. K < J LGJQ K N OK KKG L < O L L K LGJK GFLJGDD J. N GFDQ K Fnew N O ML > O EGJ N OK, L Q\< G F L app/views/visitors/ app/views/visitors/ >GD< J.
F E GMJ O > D new.html.erbnew.html.erb , D PL FK GF KG L L DK
B L EHD L F F F LG FL JHJ L L E JCMH.J J K N J D KQFL P K L L F MK < >GJ N O > D . F L K L
KQFL P L L K EGKL GEEGFDQ MK < Q FF JK. GE PH J F < < DD O O FL < LG JGE < L K GJ J L < HJG J EE L DDQ.
87
http://railsapps.github.io/rails-haml.htmlhttp://slim-lang.com/http://slim-lang.com/http://railsapps.github.io/rails-haml.html8/11/2019 Learn Rails
88/195
F LL J K L MK >MDF KK G> L OF J EG< D O F O DGGC L . J K FG O Q LG < KHD Q D MD L GF MK F G
DK N K MK O Q LG < KHD Q L JL < Q GMFL QGM\J HJG J EE J, QGM E L OGF< J O Q O GFDQ GMLHML L N JF O F MK B LG E < FQ M Q G< , O GMD< H J>GJE L
L H Q E QGM\N MK < ' N J HL GJ , QGM E Q N H J>GJE < D MD L GFH . DK OGMD< DDGO MK LG GJE GEHD P D MD L GFK F < L F L N O.
B >GJ O F < KHD Q L GE H , O F < LG J L L K LGJK
Controller
K LGJK GFLJGDD J K L DM L L F J LG GFLJGDD J L GF, O MK L FGL L GF Y K LG F F L GFLJGDD J D KK F E O L L L GF (E L G F Lnew E L G L OF J EG< D. AFQ FKL F N J D K (N J
J L J) O DD N D D F L GJJ KHGF< F N O > D .
88
http://en.wikipedia.org/wiki/CamelCasehttp://en.wikipedia.org/wiki/CamelCase8/11/2019 Learn Rails
89/195
GFLJGDD J L GFK J F< J L EHD L F L app/viewsapp/views < J LGJQ GJJ KHGF< F LG LG> L GFLJGDD J F< L GF >L J P ML F G< F L L GF. Jnew L GF G> L
K LGJK GFLJGDD J J F< JK L L EHD L app/views/visitors/new.html.erbapp/views/visitors/new.html.erb >L J J L F L@owner FKL F N J D .
new E L G< K < HL N DQ K EHD . JGEAHHD L GF GFLJGDD J J F< J F L N O.
G< PHD L > O O K LG. L OGMD< DGGC KGE L F D C L K:
class VisitorsController < ApplicationController
def new
@owner = Owner .newrender 'visitors/new'
end
end
K K F P EHD G> DK E . GE < N DGH JK GEHD F L K Y GFN FL GF GN J GF> MJ L GFZ HJ F HD D L DK G< D J JQ. K F >JMKLJ L F O F, K MF< JKL F< O L\K G F GF.
N D F L GJ N O > D F E < newnew (L > D PL FK GF .html.erb.html.erb K KKME
Q < > MDL). G< MF< JDQ F Lrender E L G< K GEHD P. GJLMF L DQ, DD F L E L G< F< FKL FL L L OF J EG< D. DK L C K
AK FF J, K EHDQ HL L E F< GMF< QGMJK D> OGJCK. AK QGM F PH J F , QGM F < N FLG L DK KGMJ
Scaffolding
K LMLGJ D EK LG N QGM KGD < >GMF< L GF F K GF HEG< DWN OW GFLJGDD J H LL JF K GF G> L EGKL EHGJL FL. \N MF< JKL F< EG< DWN OW GFLJGDD J J L LMJ K LG J L F<
F< GFLJGDD J > D K.
AK QGM GFL FM QGMJ KLM DK, QGM\DD > F< GL J LMLGJ DKscaffoldingK GJL ML. GJ P EHD ,DK M < K: LL F L JL < O L DKF DM< K K L GF Y
H F< MFF F M CDQ O L >>GD< F Z O K GOK GO LG MK rails generate scaffold GEE F< LG J L EG< D, N O, F< GFLJGDD J > D KGH J L GF. LM< FLK G>L F MK K >>GD< F LG J L K EHD DK
89
http://guides.rubyonrails.org/getting_started.htmlhttp://guides.rubyonrails.org/getting_started.html8/11/2019 Learn Rails
90/195
F HJ L , \N G K JN < L L OGJC F DK < N DGH JK K D>GD< F > JIM CDQ Q F QGM N F\L LJ < L, F
GFN F FL LG N GFKGD O FGJ L K JN J F< FGL JGEE F
8/11/2019 Learn Rails
91/195
L\K GEE L GMJ F K LG L L J HGK LGJQ.
$ git add -A$ git commit -m "dynamic home page"$ git push
GO D L\K L C DGGC L LJGM D K GGL F .
91
8/11/2019 Learn Rails
92/195
HL J 16
JGM D K GGLF L D KL HL J, O M DL DK. J O K DGL LG DK EHD , F< GH L OGJC < L > JKL L E QGM LJ < L.
B >GJ O LO J < N DGH J, QGM\DD KH
G< L L GJ LJGM
B >GJ QGM L KL JL GJ GFL FMHL J, O \J G F LG L JGO O Q L OGJC O \N JGE L HJ N GMK HL J KG E C KMJ HGK LGJQ.
Interactive Ruby Shell
J O DD L E K O F QGM O FL LG LJQ KF HH L G> M Q G< MLGGD O DD B, L FL J L N M Q DD.
B K M Q FL JHJ L J L L JMFK >JGE L GEE F< D F . L P MLHJGN < K F EE < L J KHGFK , DDGO F QGM LG PH J E FL F J D
92
8/11/2019 Learn Rails
93/195
L\K LJQ L.
$ irb2.0.0p0 :001 >
GEE F QGM FL J N D < M Q PHJ KO DD < KHD Q L J KMDL G> N DML F L PHJ KK GF.
JQ K EHD J L E L :
2.0.0p0 :001 > n = 2=> 2
2.0.0p0 :002 > n + 2=> 4
GO! GM J MK F QGMJ GEHML J >GJ K EHD E L . * Q QGM F JGE QGMJ H GF .
B O DD N DM L FQ M Q PHJ KK GF F< DHK QGM IM CDQ < LK GJJ L.
B$ B) !(/ $ C "#
AL > JKL D F , L HH JK B OGJCK GF MKL GF D F G> G< .A LM DDQ, B F F G< . JQ L:
2.0.0p0 :001 > n = 10=> 10
2.0.0p0 :002 > if n < 102.0.0p0 :003?> puts "small"2.0.0p0 :004?> else
2.0.0p0 :005 > puts "big"2.0.0p0 :006?> endbig
=> nil2.0.0p0 :007 >
J O K Ln = 10 F< L F FL J GF< L GF D KL L E FL D F - Q-D F . A> F Dend , B FL JHJ LK L G< F< GMLHMLK L J KMDL.
GM\DD G>L F FL J EGJ L F GF D F G> G< F B. > QGM > F< QGMQGM\N FL J < LQHGK F< < LG FL J L K E G< J H L D :
93
8/11/2019 Learn Rails
94/195
2.0.0p0 :001 > load './mytest.rb'
Q1'00'+% B
L F N JQ >JMKLJ L F LG > F< QGM J KLM C FK < B. FD C EF\L IM L O L GFLJGD- . FL J GFLJGD- GJ LQHexit LG IM L B:
$ irb2.0.0p0 :001 > exit
L#a + M # A 10 B
J \K F FL JL F F O Q LG D JF GML B:
U Q\K ( G F FL) M < LG M Q
J \K EGJ GFN FL GF D O Q LG D JF GML B:
U J E L JG J EE J\K M L >D K E KK