Top Banner

of 195

Learn Rails

Jun 02, 2018

Download

Documents

Ahmad Bilal
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 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_concerns
  • 8/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%93Controller
  • 8/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_Done
  • 8/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_development
  • 8/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.app
  • 8/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/rails
  • 8/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%93Controller
  • 8/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.txt
  • 8/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/new
  • 8/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.html
  • 8/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-tableless
  • 8/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_variable
  • 8/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.html
  • 8/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%93Controller
  • 8/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_transfer
  • 8/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/Date
  • 8/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.html
  • 8/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/CamelCase
  • 8/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.html
  • 8/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