рдЖрдЬ рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬрд╝ рдЙрдореНрдореАрджрд╡рд╛рд░ RoR 3.1 рдЬрд╛рд░реА рдХреА рдЧрдИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреНрд▓реЙрдЧ рдиреЗ рдЖрдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд╡рд▓реЛрдХрди рд▓реЗрдЦ рд▓рд┐рдЦрд╛ред рдЖрдкрдХреЛ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд╡рд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИред рдЗрдЯреИрд▓рд┐рдХ рдореЗрдВ рдкрд╛рда рдореЗрдВ рдЖрдЧреЗ рдореЗрд░реЗ рдиреЛрдЯреНрд╕ рд╣реИрдВредрдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ RailsConf (DHH - Translator's Note) рдореЗрдВ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рд╣рдо рдЕрдВрдд рдореЗрдВ рд░реЗрд▓ 3.1: рд░рд┐рд▓реАрдЬрд╝ рдХреИрдВрдбрд┐рдбреЗрдЯ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдпрд╣ рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рд░реЛрдорд╛рдВрдЪрдХ рд░рд┐рд▓реАрдЬ рд╣реИред рджреЛ рдирдИ рд╣рддреНрдпрд╛рд░реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЗрд╕рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреАрдВ рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╕реБрдзрд╛рд░ рд╣реБрдПред рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рддреНрдпрд╛рд░рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
рдПрд╕реЗрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрди
3.1 рдореЗрдВ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛
рд╕реНрдкреЙрдХреЗрдЯреНрд╕ 2.0 рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╣реЛрдЧреАред рдпрд╣ рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдЗрдВрдЬрдиреЛрдВ (рдЗрдВрдЬрди) рд╕рд╣рд┐рдд рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг
RailsConf рдкрд░
рдореЗрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рд╕реБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП
рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП
SCSS рдХреЗ рд╕рд╛рде рдЖрддреА рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЖ рд░рд╣реЗ рд╣реИрдВред
рдПрд╕реЗрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЖрд╡реЗрджрди рдХреЗ рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкрджрдирд╛рдо рд╣реИред рдЗрд╕рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдЖрдкрдХреЗ рдордЪрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ, рд╡рд┐рдЪрд╛рд░ рдФрд░ рдореЙрдбрд▓ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЗрдПрд╕ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рднреА рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред рдпрд╣ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рджрд░реНрдЬрдиреЛрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд░реЗрд▓ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЖрдкрдХреЗ рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдореЗрдВ рд╕рдореЗрдЯрдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛редHTTP рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ
рдпрд╣ рдЗрдиреЛрд╡реЗрд╢рди рдмреНрд░рд╛рдЙрдЬрд░ рдХреЛ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдФрд░ рдЬреЗрд╡рд░рд╛рд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдкрд░рд┐рдгрд╛рдо рдкреГрд╖реНрда рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рдЧрддрд┐ рдореЗрдВ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡реГрджреНрдзрд┐ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЛрдХрдкреНрд░рд┐рдп nginx + рдЧреЗрдВрдбрд╛ рд╕рдВрдпреЛрдЬрди рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ RailsCasts рдкрд░ рдПрдХ
рд╡реАрдбрд┐рдпреЛ рд╣реИ , рдЖрдк
рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рднреА рджреЗрдЦ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдореБрдЦреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╢реНрдб рд╣реЗрдбрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ </ head>) рдЕрдиреБрд░реЛрдз рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЙрд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрдПрд╕рдПрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐редjQuery рдЕрдм рдбрд┐рдлреЙрд▓реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ
рд╣рдордиреЗ
jQuery рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рд░реЗрд▓ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд╡рд╛рдкрд╕ рд░реЛрд▓рд┐рдВрдЧ рдХрд░рдирд╛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╡реЗ рдмреБрдХреНрдХрд▓рд░ рдХреЛ jquery- рд░реЗрд▓ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк-рд░реЗрд▓ рд░рддреНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдмрд╕ рдЖрдкрдХреЛ рдЬреЗрдордлрд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдЬрд╕реНрдЯ рдЕрд░реНрдирд┐рдВрдЧ рд╣реИред
рдЕрдиреНрдп рдЙрдкрд╣рд╛рд░:
- рдкреНрд░рддрд┐рд╡рд░реНрддреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди : DRY рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЬреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд╡рдпрдВ рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреНрд▓реАрдирд░, рдЖрд╕рд╛рди, рдЖрд╕рд╛рдиред рд╣рд╛рдБ, self.up рдФрд░ self.down рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рдм рдХреБрдЫ рдФрд░ рднреА рдЕрдзрд┐рдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реЛ рдЧрдпрд╛ рд╣реИред
- рдорд╛рдЙрдВрдЯреЗрдмрд▓ рдЗрдВрдЬрди : рдЗрдВрдЬрдиреЛрдВ рдХреЗ рдкрд╛рд╕ рдЕрдм рдорд╛рд░реНрдЧреЛрдВ рдФрд░ рд╕рд╣рд╛рдпрдХреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕рд╛рде рд╣реА рдирдИ рд╕рдВрдкрддреНрддрд┐, рдкреНрд░рд▓реЗрдЦрди рдЬрд▓реНрдж рд╣реА рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛)ред рдпрд╣рд╛рдВ рдЖрдк рдЙрдирдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣рд╛рдВ рдкреБрд░рд╛рдиреА рд╣реЛ рдЪреБрдХреА рд╣реИ)ред
- рдкрд╣рдЪрд╛рди рдорд╛рдирдЪрд┐рддреНрд░ : рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдХрд╛рд░рдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрднреА рднреА рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рд╢рд░реНрддреЛрдВ рдкрд░ рдЖ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╣рддрд░ рд╣реИ рдмреЗрд╣рддрд░! рдкрд╣рд▓реЗ, рдЬрдм рдЖрдкрдиреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рджреЛ рд╕рдорд╛рди рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдереЗ, рддреЛ рджреВрд╕рд░рд╛ рдЕрдиреБрд░реЛрдз рдХреИрд╢ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдСрдмреНрдЬреЗрдХреНрдЯ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдереЗ ред рдЕрдм рдПрдХ рдЗрдХрд╛рдИ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ = рд╕рд╛рдордиреЗ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдбреАрдмрдЧрд┐рдВрдЧ (рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рдЕрдм рдкреВрд░реЗ рдЙрддреНрддрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ) рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
- рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХрдерди : ActiveRecord рдЕрдм рдХреИрд╢реНрдб рддреИрдпрд╛рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреЛрд╕реНрдЯрдХрд╛рд░реНрдб рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ MySQL рдореЗрдВ рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ред рдЕрдиреБрд░реЛрдз рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд░реЗрд▓ рдПрдХ рдмрд╛рд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЬрдм рдЖрдк рдПрдХ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдЯреЛрдХрди (рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реБрдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ 20-30% рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рджреЗрддрд╛ рд╣реИ рдФрд░ рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ 10 рдЧреБрдирд╛ (!) рдХреА рд╡реГрджреНрдзрд┐ рдХрд░рддрд╛ рд╣реИред
- рд░реИрдХ :: рдХреИрд╢реЗ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ : рдкреЗрдЬ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╢рд░реНрдд рдкреНрд░рд╛рдкреНрддрд┐ (рд╕рд╢рд░реНрдд рдкреНрд░рд╛рдкреНрдд) рдХреЗ рд╕рд╛рде HTTP рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рд╣рдо рдЬрд▓реНрдж рд╣реА рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдбрд┐рд▓реАрд╡рд░реА рд╕реЗ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ)ред рд░реИрдХ :: рдХреИрд╢ рдПрдХ рдРрд╕рд╛ рдЗрдВрдЬрди рд╣реИ рдЬреЛ рдХреИрд╢ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HTTP рд╣реЗрдбрд░ (рдПрдХреНрд╕рдкрд╛рдпрд░, рдХреИрд╢-рдХрдВрдЯреНрд░реЛрд▓, рд▓рд╛рд╕реНрдЯ-рдореЙрдбрд┐рдлрд╛рдЗрдб, ETag) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рд╢рд░реНрдд рдкреНрд░рд╛рдкреНрддрд┐ - рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдЕрдВрддрд┐рдо рдкрд╣реБрдВрдЪ рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд╣реИ, рд╣рдо 304 рджреЗрддреЗ рд╣реИрдВред рдкреЗрдЬрд┐рдВрдЧ рдХреИрд╢рд┐рдВрдЧ рдмрджрд▓реЗрдВ, рдЬреЛ рд▓рдЧрднрдЧ рдЕрдкреНрд░рднрд╛рд╡реА рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреГрд╖реНрда рдХреЗ рдЫреЛрдЯреЗ рд╣рдореЗрд╢рд╛ рдЧрддрд┐рд╢реАрд▓ рдЯреБрдХрдбрд╝реЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкреИрдирд▓ рд▓рдЧрднрдЧ рд╕реНрдерд┐рд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордпред )ред
- рдЯрд░реНрди рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ :: рд░реВрдмреА 1.9 рдореЗрдВ рдпреВрдирд┐рдЯ: рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рдиред рд░реВрдмреА 1.9 рдкрд░ рдирдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
- ForceSSL: рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЖрд╕рд╛рди рд╣реИред рдЖрд╡реЗрджрди рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ - рдФрд░ http рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ https рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рднреВрдорд┐рдХрд╛ -рдЖрдзрд╛рд░рд┐рдд рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ : attr_protected рдЕрдм рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рднреВрдорд┐рдХрд╛ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ / рдЧреИрд░-рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ, рдЖрджрд┐ рдХреЗ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рдеред рдЕрдм рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 3.1 рдореЗрдВ рдЖрдк рдХреИрдирдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рдд рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ RailsCasts рдореЗрдВ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
- has_secure_password : BCrypt рдкрд░ рдЖрд╕рд╛рди рдПрдореНрдмреЗрдб рдкрд╛рд╕рд╡рд░реНрдб рд╕реБрд░рдХреНрд╖рд╛ред рдЕрдм рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рдлреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрд╣ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╛рд╕рд╡рд░реНрдб рд░рд┐рдХрд╡рд░реА, рдмреНрд▓реЙрдХрд┐рдВрдЧ, рд░рдЬрд┐рд╕реНрдЯреНрд░реЗрд╢рди рдХрдиреНрдлрд░реНрдореЗрд╢рди рдЖрджрд┐ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЕрднреА рднреА рдбреЗрд╡рд┐рд╕ (рдЬреЛ рдХрд┐ рд░реИрдХ-рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдЗрдиреЛрд╡реЗрд╢рди рд╕реЗ рд▓рд╛рдн рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
- рдХрд╕реНрдЯрдо рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ: JSON, рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реАрд░рд┐рдпрд▓ рдХрд░реЗрдВред рдпрджрд┐ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ YAML рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЕрдм рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдФрд░ рдбрдВрдк рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк
рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдПрдХ
рд╡рд┐рд╢рд╛рд▓ рд╕реВрдЪреА , рд╕рд╛рде рд╣реА RailsCasts рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕реА
рд╡реАрдбрд┐рдпреЛ рд╕рдореАрдХреНрд╖рд╛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд░реВрдмреА 1.9.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд░реЗрд▓ 4.0.x рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 4.0 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдПред рд░реВрдмреА 1.9.x рдХрд╛ рдЪрд▓рди рд╣реИред рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдФрд░ рдЧрддрд┐ рдХреЗ рдЕрдЪрд╛рдирдХ рдлрдЯрдиреЗ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред
рдЖрдк
gem install rails --pre
рд╕рд╛рде 3.1 рдЖрд░рд╕реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ред рд╡рд┐рдореЛрдЪрди рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ рдФрд░
рдмрдЧреНрд╕ рдХреЛ рдЧрд┐рддреБрдм рдореЗрдВ рднреЗрдЬреЗрдВ ред рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реЛ рдЬрд╛рдПред