
рд░реЗрд▓реНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рд░реВрдмреА рдХрд╛ рдЪреМрдерд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдиреЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рддрдХ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬ рдХреА рддрд╛рд░реАрдЦ рдирд╣реАрдВ рд╣реИ, рдХрдИ рд▓реЛрдЧ рдЗрд╕ рд╕рд╛рд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред
рдврд╛рдВрдЪреЗ рдХрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рд╕рд╛рд▓ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИ рдФрд░ рдЖрдВрддрд░рд┐рдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рд░реВрдкрд░реЗрдЦрд╛ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ рд╣реИ рдФрд░ рдПрдХ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓рд░ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд╡рд╛рдЪрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрд╛рдо рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВ, рддрд╛рдХрд┐ рдореБрдЦреНрдп рд╕рдлрд╛рдИ рд╕рд╛рдл рд╣реЛ рдЬрд╛рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреБрд░рд╛рдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЗрдВрдЬрди рдпрд╛рд░реНрдб рдЕрднреА рддрдХ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╛рдЙрдб рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд░реЗрд▓ 4 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ - рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдпрджрд┐ рдЖрдк рд░реЗрд▓ 4 рдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ
рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк
рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рд░реЗрд▓ 4 рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рд░реЗрд▓ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкрд░рд┐рд╡рд░реНрддрди 4
рдХрдИ рдЪреАрдЬреЛрдВ рдХреЛ рд░реЗрд▓ 4 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╕рдВрдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд╣рдо рдХреБрдЫ рдирдП рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
рд░реВрдмреА 1.9.3 рдиреНрдпреВрдирддрдо
рд░реЗрд▓ 4 рдореЗрдВ рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдХрд┐ рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдм рд░реВрдмреА 1.9.3 рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдорд░реНрдерди 1.8.7 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдордореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ 1.9.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдорд░реНрдерди 1.9.2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬреЛрд╕ рд╡рд╛рд▓рд┐рдо рдХреА
рдпрд╣ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд░реЗрд▓ 4 рдХреЛ рд░реВрдмреА 1.9.3+ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЕрдЧрд░ рд░реБрдмреА_рд╡рд┐рд░реНрд╕рд┐рдпрди <1.9.3ред
рдХреНрдпрд╛ рдЖрдк рдХреЗ рд▓рд┐рдП рдпрд╣ рдорддрд▓рдм рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдк 1.8.7 рдпрд╛ рд░реВрдмреА рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 1.8.7 рдереЛрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рди рдЯреНрдпреВрдирд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣реИ), рддреЛ рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред 1.8.7 рд╕реЗ 1.9.3 рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рджрд░реНрдж рд░рд╣рд┐рдд рдФрд░ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рд╕рдм рдкреНрд░реЛрдЧреНрд░рд╛рдо, рдЙрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЗрди рджреЛ рд░рд┐рд▓реАрдЬ рдХреЗ рдмреАрдЪ рдкреБрд░рд╛рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдЪреНрдЫрд╛ рдХреЛрдб рдХрд╡рд░реЗрдЬ рд╣реИ, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ 1.9.3 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ (
RVM рдХреЗ рд╕рд╛рде рдпрд╣ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИ), рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВред рдпрджрд┐ рдЖрдк 1.8 рд╕реЗ 1.9 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдпреБрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрдВрдЬрди рдпрд╛рд░реНрдб, рдПрдВрдереЛрдиреА рдПрдХреЛрдореЛрдЬрд╝реЛ рдХреЗ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА
рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝реЗрдВред
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд░ рдХреЛрдИ рдирд╡реАрдирддрдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рд╕реНрддрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХреЗред
рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рдХреНрд░реЗрддрд╛ / рдкреНрд▓рдЧрдЗрдиреНрд╕
рд╡рд┐рдХреНрд░реЗрддрд╛ / рдкреНрд▓рдЧрдЗрдиреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рд░реЗрд▓ 4 рдореЗрдВ рдЧрд╛рдпрдм рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрде рдпрд╛ рдЧрд┐рдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдмреБрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХрдИ рдкреБрд░рд╛рдиреА рдмрд╛рддреЗрдВ рдХреБрдЫ рдЬрд╛рдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛
рд╣реИрд╢ рдЖрдзрд╛рд░рд┐рдд рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдЦреЛрдЬрдХ рддрд░реАрдХреЛрдВ
рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛрдЧрд╛ рдХрд┐ рд░реЗрд▓ рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ "рдкреБрд░рд╛рдиреЗ" ActiveRecord рдХреНрд╡реЗрд░реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА рд▓рдЧрд╛рддрд╛рд░ рдЬрд╛рд░реА рдХреА рдЧрдИ рдереАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
User.find(:first, :conditions => { тАж })
рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЕрдм рд░реЗрд▓ 4 рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдЧрд▓реЗ рдЬрд╛рдо deprecated_finders рдордгрд┐ ActiveRecord рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛:
github.com/rails/activerecord-deprecated_findersActiveRecord :: SessionStore
рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рддреНрд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдХрдИ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреБрдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИред рддреЛ, ActiveRecord :: SessionStore рд░реЗрд▓ 4. рдЙрдкрдпреЛрдЧ рдореЗрдВ рд▓рд╛рдкрддрд╛ ActiveRecord-session_store рдЗрд╕ funtsionalnost рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдо:
github.com/rails/activerecord-session_store ред
рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд░рд╣рдирд╛, рдХреБрдХреА рдореЗрдВ рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди (рдпрд╛ рдХрдордЬрд╝реЛрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди) рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╕рд┐рд░реНрдл рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдРрд╕реА рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ (рдиреЗрдЯрд╡рд░реНрдХ рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░ рдФрд░ рд╕реНрд╡рдпрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдИрдбреА рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдмрдЬрд╛рдп рд╕рддреНрд░ рдпрд╛ рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдкреВрд░реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рд╣реИ, рддреЛ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╕ (рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА memcached рдпрд╛ PostgreSQL hstore рдореЗрдВ рд╣реИ рдФрд░ рдпрд╣ рдЬрдЧрд╣) рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рддреНрд░ рдЖрдИрдбреА рдХрд╣рддреЗ рд╣реИрдВред
ActiveResource
ActiveResource, REST- рдЖрдзрд╛рд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП ORM (рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ) рд╣реИред рдЗрд╕реЗ рд░реЗрд▓ 4 рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓реЗрдЧрд╛ред
рдЧреБрдЗрд▓реЗрд░реНрдореЛ рдЗрдЧрд░рд╛рди рдиреЗ рдпрддрд┐ рдореАрдбрд┐рдпрд╛ рдмреНрд▓реЙрдЧ рдХреЛ рдмрддрд╛рдпрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП
рдкреНрд░реЗрд░рдгрд╛ рдпрд╣ рдереА рдХрд┐ рдЙрдирдХреЗ рд╕рдорд░реНрдерди рдиреЗ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЛ рдкреНрдпрд╛рд░ рдФрд░ рдзреНрдпрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХ рд░рд╛рд╢рд┐ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХреА рдереА рдЬрд┐рд╕рдХреЗ рд╡рд╣ рд╣рдХрджрд╛рд░ рд╣реИрдВ ред ActiveResource рдХреЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдиреЗ
рдЬреЗрд░реЗрдореА рдХреЗрдореНрдкрд░ рдХреЗ рдиреЗрддреГрддреНрд╡ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдмрдирд╛рдИред рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ, рдХрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рднреА ActiveResource рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рд░реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ ActiveResource рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред ActiveResource рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ 'activeresource' рдЬрд╛рдо рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:
github.com/rails/activeresource ред
рд░реЗрд▓реНрд╕ рдСрдмреНрдЬрд░реНрд╡рд░, рдХреИрд╢рд┐рдВрдЧ рдкреЗрдЬ рдФрд░ рдХреНрд░рд┐рдпрд╛рдПрдБ
рдкреГрд╖реНрдареЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдХреИрд╢рд┐рдВрдЧ, рдХреЛрдб-рдирд╛рдо "рд░реВрд╕реА рдЧреБрдбрд╝рд┐рдпрд╛" рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд░реЗрд▓ 4 рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред DHH (рдбреЗрд╡рд┐рдб рд╣реЗрдиреАрдорд┐рдпрд░ рд╣реИрдиреНрд╕рди) рдХреЗ рдкрд╛рд╕ рдПрдХ рдЬрд╛рдо рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП
github.com/rails/cache_digests рджреЗрдЦреЗрдВ)ред
рдкреГрд╖реНрда рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдХрдореА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╡рд╕реНрддреБрддрдГ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╢ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ Rails4 рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЗрддрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЕрдХреНрд╕рд░ рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рджреГрдврд╝рддрд╛ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдбрдВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдХреЙрд▓рдмреИрдХ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ред рддреЛ рд░реЗрд▓ 4 рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХреИрд╢ рдкреГрд╖реНрдареЛрдВ, рдХреНрд░рд┐рдпрд╛рдПрдВ рдФрд░ рд╕рдореАрдХреНрд╖рдХред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
github.com/rails/actionpack-action_cachinggithub.com/rails/actionpack-page_cachinggithub.com/rails/rails-observersрдореЗрдордХреА-рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмрдЬрд╛рдп рджрд▓реНрд▓реА
рджрд▓реНрд▓реА рдЕрдм рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдореЗрдореНрдХреИрд╢-рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде memcachedред рдЗрд╕ рдирд╡рд╛рдЪрд╛рд░ рдХреЛ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдореЛрджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рджрд▓реНрд▓реА рдореЗрдордХреЗрдЪ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдФрд░ рдХрдВрд╕реАрд▓рд░ (рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдПрдХ рд╡рд┐рд╖рдп рдЬреЛ рд░реВрдмреА рд╕рдореБрджрд╛рдп рдореЗрдВ рдмрд╣реБрдд рдЪрд┐рдВрддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЬреЗрдордлрд╛рдЗрд▓ рдореЗрдВ "рджрд▓реНрд▓реА" рдЬреИрдо рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдпрд╣ рдЕрднреА рднреА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдХреИрд╢ рд╕реНрдЯреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ mem_cache_store рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
рдирдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреЗрд╕реНрдЯ рд╕реНрдерд╛рди
рд░реЗрд▓реНрд╕ рдФрд░
рдЯреАрдбреАрдбреА (рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╛рд╕) рдХреЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдирд╛рдореЛрдВ рд╕реЗ рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред "рдореЙрдбрд▓" "рдирд┐рдпрдВрддреНрд░рдХреЛрдВ", "рдирд┐рдпрдВрддреНрд░рдХреЛрдВ" рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ - "рдХрд╛рд░реНрдпрд╛рддреНрдордХ" рдкрд░реАрдХреНрд╖рдгреЛрдВ рдЖрджрд┐ рдХреЗ рд▓рд┐рдПред рд░реЗрд▓ 4 рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рди рдирд╛рдо рд░реЗрд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП rspec рд╕рдореНрдореЗрд▓рди рдирд╛рдореЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реЛрдВрдЧреЗ:
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЙрдбрд▓ -> рдкрд░реАрдХреНрд╖рдг / рдореЙрдбрд▓ (рдкрд░реАрдХреНрд╖рдг / рдЗрдХрд╛рдЗрдпреЛрдВ рдерд╛)
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╕рд╣рд╛рдпрдХреЛрдВ -> рдкрд░реАрдХреНрд╖рд╛ / рд╕рд╣рд╛рдпрдХреЛрдВ (рдкрд░реАрдХреНрд╖рд╛ / рдЗрдХрд╛рдЗрдпреЛрдВ / рд╕рд╣рд╛рдпрдХреЛрдВ рдерд╛)
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдирд┐рдпрдВрддреНрд░рдХ -> рдкрд░реАрдХреНрд╖рд╛ / рдирд┐рдпрдВрддреНрд░рдХ (рдерд╛ рдкрд░реАрдХреНрд╖рд╛ / рдХрд╛рд░реНрдпрд╛рддреНрдордХ)
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЗрд▓рд░реНрд╕ -> рдкрд░реАрдХреНрд╖рд╛ / рдореЗрд▓рд░реНрд╕ (рдерд╛ рдкрд░реАрдХреНрд╖рд╛ / рдХрд╛рд░реНрдпрд╛рддреНрдордХ)
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореВрдб рд╣реИ, рдФрд░ рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рдЙрдирдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ
рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдкрдврд╝рдиреЗ рдпрд╛ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдХрдорд┐рдЯрдореЗрдВрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд░реАрдХреНрд╖рдг "рдПрдХреАрдХрд░рдг" (рдЯреЗрд╕реНрдЯ / рдПрдХреАрдХрд░рдг) рдХреЛ "рд╕реНрд╡реАрдХреГрддрд┐" рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдмрджрд▓рдирд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдерд╛ рдЬрд┐рд╕рдиреЗ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЪрд░реНрдЪрд╛ рдХреА рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдВрдд рдореЗрдВ,
рдмреНрд▓реЛрдореЗрдЬ рдХрдореЗрдЯреА рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдирд╛рдо рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛,
рдЬреИрд╕рд╛ рдХрд┐
рдХрдорд┐рдЯрдореЗрдВрдЯ рдХреА рдордВрдЬреВрд░реА рдореЗрдВ рджреЗрд░реА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрдИ рдкреНрд░рдореБрдЦ рд░реЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдордВрдЬреВрд░реА рдорд┐рд▓ рдЧрдИред
PATCH рдХреНрд░рд┐рдпрд╛
рд░реЗрд▓ рдиреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "PUT" HTTP рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, HTTP рд╢рдмреНрджрд╛рд░реНрде рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╕рдВрд╕рд╛рдзрди рдХреА рдкреВрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ PUT рджреНрд╡рд╛рд░рд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, PUT, рд╢рдмреНрджрд╛рд░реНрде рд░реВрдк рд╕реЗ, рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рддрдХрдиреАрдХреА рдкрдХреНрд╖ рд╕реЗ, рд╣рдо рдЗрд╕ "рдЧрд▓рдд" рдХреЛ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рдЯреБрдХрдбрд╝реЗ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рддрдм рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдордиреЗ PUT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ RESTful рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдерд╛ред
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд░реЗрд▓ 4 рдореЗрдВ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдХреНрд░рд┐рдпрд╛ рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╣реА рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ, PATCH рдХреЛ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдпрд╣, HTTP рдХреЗ рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ
рдЖрд░рдПрдлрд╕реА 5789 ред
рд░реЗрд▓ рдХреЗ рд╕рднреА рд░реАрд╕реНрдЯрдлреБрд▓ рдлреЙрд░реНрдореЛрдВ рдХреА рддрд░рд╣, рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ "_рдорд┐рдереЛрдб" рдлрд╝реАрд▓реНрдб рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ "PUTCH" рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ "PUT" рдХреЗ рдмрдЬрд╛рдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдорд╛рд░реНрдЧ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ "рдЕрдкрдбреЗрдЯ" рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдкреИрдЯ рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрдмрджреНрдз рдХрд░реЗрдЧрд╛ред
рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡ рдкреАрдпреВрдЯреА рдкрджреНрдзрддрд┐ рдХреЛ рд░реЗрд▓ 4.0 рдореЗрдВ "рдЕрдкрдбреЗрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рдореМрдЬреВрджрд╛ рдПрдкреАрдЖрдИ рдЕрдкрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдо рдХреЛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХреЗрдВред
рдЖрдк
RAIL рдмреНрд▓реЙрдЧ рдкрд░
PATCH рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рдПрдХ рдорд╣рд╛рди рдмрджрд▓рд╛рд╡ рд╣реИ, рдФрд░ рдЬреЛ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдпрди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред
threadsafe рдбрд┐рдлрд╝реЙрд▓реНрдЯ
рд░реВрдмреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ
рдЬреАрдЖрдИрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд╣реА рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдорд╛рдВрдЧ рдХреА рд╣реИ, рдФрд░ рд░реЗрд▓ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдпрд╣ рд╕рдордЭрд╛ рдХрд┐
рдПрдордЖрд░рдЖрдИ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╕реЗрдЧрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░реЛрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдХреА рдмрд╣реБрддрд╛рдпрдд рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рдирдХ рд░реВрдмреА рд╡реНрдпрд╛рдЦреНрдпрд╛рдПрдВ, рдЬрд┐рдиреНрд╣реЗрдВ "рдПрдордЖрд░рдЖрдИ" рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдЖрдпрд╛рдореА рдирд╣реАрдВ рд╣реИрдВред рдЕрдЧрд░ рдПрдХ рдзрд╛рдЧрд╛ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ, рдЬреЛ рдореБрдЦреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реА рдПрдХ рд╕рд╛рде рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рдХреЛрдб рдореЗрдВ рд╣реА рд▓реЗрдХрд┐рди рдорд╛рдгрд┐рдХ рдЕрднреА рднреА рдЬреАрдЖрдИрдПрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╣ рдПрдХ рд╕рд╛рде рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд░реЗрд▓ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реБрдИ рд╣реИ рдФрд░ Rails4 рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдпрд╣ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдЕрднреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдХрд░ рдФрд░ рдереНрд░реЗрдбрд╕реЗрдлрд╝ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдХреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЗрд╕ рдХрд╛рд░рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд░реВрдмреА рд╕рдореБрджрд╛рдп рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рд╕рд╛рде рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИред
рд╣рд╛рд░реВрди рдкреИрдЯрд░рд╕рди рдиреЗ config.threadsafe рдХреА рдЪрд░реНрдЪрд╛ рдХреА! рдирд┐рдореНрди рдЖрд▓реЗрдЦ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░:
tenderlovemaking.com/2012/06/18/removing-config-threadsafe.htmlPostgres рдПрдЪ рд╕реНрдЯреЛрд░
Rails 4 рдореЗрдВ ActiveRecord PostgreSQL hstore рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдкрдХреЛ PostgreSQL рдХреЙрд▓рдо рдореЗрдВ рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ 'hstore' рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдХреЗрд╡рд▓ рд╣реИрд╢ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЗрд░рд╛рджреЛрдВ рдФрд░ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдХреЙрд▓рдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ рдЕрдм рдПрдХ рджреЗрд╢реА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рдареЛрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ MongoDB, CouchDB, Riak, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЧреИрд░-рдпреЛрдЬрдирд╛рдмрджреНрдз рдбреЗрдЯрд╛рд╕реНрдЯреЛрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЧреИрд░-рдпреЛрдЬрдирд╛рдмрджреНрдз рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ Hstore рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдЧреИрд░-рдпреЛрдЬрдирд╛рдмрджреНрдз рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд░реЗрд▓ рдореЗрдВ рдЗрд╕рдХрд╛ рдПрдХреАрдХрд░рдг рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдЖрдкрдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрдЯрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдЙрдбрд╝рдиреЗ рдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рд╕реНрдЯреЛрд░реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреБрдж рдХреЛ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдБред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдордХреНрдЦреА рдкрд░ рдирдИ рдХреБрдВрдЬреА / рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рд╡рд╕реНрддреБ рдпреЛрдЬрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реЛрдЧреАред рд╢рд╛рдпрдж рдпрд╣ рд╕реАрдПрдордПрд╕ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░реВрдк рд╣реЛрдЧрд╛ред рдбреЙрдХреНрдЯрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рд▓рдп рд░реЛрдЧреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрддреАрдд рдореЗрдВ, рдпрд╣ рдХреНрд░рдорд╛рдВрдХрди рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди hstore рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рджреЗрд╢реА рддрд░реАрдХрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдк PostgreSQL рдореЗрдВ hstore рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрдЯрд┐рд╡рд░рдХреЙрд░реНрдб-
postgres-hstore рдЬреИрдо рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд░рдпрд╛рди рдмреЗрдЯреНрд╕ рдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ
рдкреЙрдбрдХрд╛рд╕реНрдЯ рдмрдирд╛рдпрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
PostgreSQL рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝рдХрд░ hstore рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ PostgreSQL 9.1+ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЬрди рдпрд╛рд░реНрдб рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рдкрд░ hstore рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк GitHub рдкрд░
postgresql9-extension рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╢реЗрдл рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрд░реНрд░реЗ, рдПрдордПрдХреЗрдбреАрдЖрд░рдбреА, рдЖрдИрдПрдирдИрдЯреА, рд╕реАрдЖрдИрдбреАрдЖрд░
: рдЪреВрдВрдХрд┐ рд╣рдо PostgreSQL рдФрд░ рд░реЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ ActiveRecord рд░реЗрд▓ 4 рдХреЗ рд╕рд╛рде PostgreSQL рдирд┐рдореНрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗ рд▓рд╛рдпрдХ рд╣реИ
рд╕рд░рдгреА, MACADDR, INET рдФрд░ рд╕реАрдЖрдИрдбреАрдЖрд░ ред рдпрджреНрдпрдкрд┐ рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ, PostgreSQL рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ ActiveRecord рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
INET рдФрд░ CIDR рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ
IPAddr рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдПрд░реЗрдЬрд╝ рдХреЛ рдПрд░реЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдореИрдХ рдкрддреЗ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ
рдЖрд░реЛрди рдкреИрдЯрд░рд╕рди рдиреЗ рд░реЗрд▓ 4 рдореЗрдВ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдЬрд┐рд╕реЗ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рднреЗрдЬреЗ рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реАрдзреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП: рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ IE рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдлрд┐рд▓рд╣рд╛рд▓, Microsoft рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рд░реЗрд▓ 4 рдореЗрдВ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рднреА рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред рдпрд╣ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рд╡рд┐рддреНрддреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ, рдЧреЗрдо рдЖрджрд┐ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЗрдВрдЬрди рдпрд╛рд░реНрдб рдЕрднреА рддрдХ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпреВрдирд┐рдХреЙрд░реНрди рдФрд░ рдпрд╛рддреНрд░реА: рд╣рдо рджреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрднреА рддрдХ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред
рдпрд╛рддреНрд░реА 4 рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдлрд╝реНрдпреВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ , рд░реЗрд▓ рдореЗрдВ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛, рдФрд░ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд░рд┐рд▓реАрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рд╣рдо рдкреИрд╕реЗрдВрдЬрд░ 4 рдХреЛ рдЕрдкрдиреЗ рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░реЗрдВрдЧреЗред
рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛, рд╣рдо рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЗрдВрдЬрди рдпрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдкреНрдпреВрдорд╛ рдкрд╣рд▓реЗ
рд╕реЗ рд╣реА рд░реБрдмрд┐рдирд┐рдпрд╕ рдХреА рддрд░рд╣ рдЕрд░реНрд▓реА рдПрдХреНрд╕реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдХреИрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ (рдЙрд░реНрдл рд░реВрд╕реА рдЧреБрдбрд╝рд┐рдпрд╛ рдХреИрд╢рд┐рдВрдЧ)
рдХреИрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдЬреИрдо рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреИрд╢ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрдХ рдФрд░ рдкреЛрд╕реНрдЯ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреИрд╢реНрдб рд╣реИрдВ:
<b id="internal-source-marker_0.9843547998461872">class Author < ActiveRecord::Base has_many :posts end class Post < ActiveRecord::Base belongs_to :author, touch: true end</b>
(рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдкрд░реНрд╢ рдЬреЛрдбрд╝рдирд╛: рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ VER_to рдПрд╕реЛрд╕рд┐рдПрд╢рди рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓реЗрдЦрдХ рдХреЗ рдЕрджреНрдпрддрди_рдд рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд▓реЗрдЦрдХ рдкреЛрд╕реНрдЯ рдЕрдкрдбреЗрдЯ рд╣реЛрддрд╛ рд╣реИ)
рдЖрдо рддреМрд░ рдкрд░ рдЖрдк рдЕрдкрдиреЗ рдХреИрд╢ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ:
<!-- app/views/authors/show.html.erb --> <% cache ['v1', @author] do %> <h1><%= @author.name %>'s posts:</h1> <%= render @author.posts %> <% end %> <!-- app/views/posts/_post.html.erb --> <% cache ['v1', post] do %> <div><%= link_to post.title, post %></div> <% end %>
/ show.html.erb -> <!-- app/views/authors/show.html.erb --> <% cache ['v1', @author] do %> <h1><%= @author.name %>'s posts:</h1> <%= render @author.posts %> <% end %> <!-- app/views/posts/_post.html.erb --> <% cache ['v1', post] do %> <div><%= link_to post.title, post %></div> <% end %>
@author]% рдХрд░> <!-- app/views/authors/show.html.erb --> <% cache ['v1', @author] do %> <h1><%= @author.name %>'s posts:</h1> <%= render @author.posts %> <% end %> <!-- app/views/posts/_post.html.erb --> <% cache ['v1', post] do %> <div><%= link_to post.title, post %></div> <% end %>
/ _post.html.erb -> <!-- app/views/authors/show.html.erb --> <% cache ['v1', @author] do %> <h1><%= @author.name %>'s posts:</h1> <%= render @author.posts %> <% end %> <!-- app/views/posts/_post.html.erb --> <% cache ['v1', post] do %> <div><%= link_to post.title, post %></div> <% end %>
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдХреИрд╢ рдлрд╝реНрд░реЗрдЧреНрдореЗрдВрдЯ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рд░рдгреА рдХреЗ рдЕрдВрджрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд░реЗрд▓ 4 рдореЗрдВ "рдХреИрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ" рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдмрд╕ рд╕рд░рдгреА рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░реЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреИрд╢ рдХреЗ рд▓рд┐рдП рдПрдордбреА 5 рдЪреЗрдХрд╕рдо рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдЬрдм рдлрд╝рд╛рдЗрд▓ рдмрджрд▓рддреА рд╣реИ, рддреЛ рдЪреЗрдХрд╕рдо рднреА рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдирдпрд╛ "рдХреИрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ" рд╣реЛрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
<!-- app/views/authors/show.html.erb --> <% cache @author do %> <h1><%= @author.name %>'s posts:</h1> <%= render @author.posts %> <% end %> <!-- app/views/posts/_post.html.erb --> <% cache post do %> <div><%= link_to post.title, post %></div> <% end %>
/ show.html.erb -> <!-- app/views/authors/show.html.erb --> <% cache @author do %> <h1><%= @author.name %>'s posts:</h1> <%= render @author.posts %> <% end %> <!-- app/views/posts/_post.html.erb --> <% cache post do %> <div><%= link_to post.title, post %></div> <% end %>
/ _post.html.erb -> <!-- app/views/authors/show.html.erb --> <% cache @author do %> <h1><%= @author.name %>'s posts:</h1> <%= render @author.posts %> <% end %> <!-- app/views/posts/_post.html.erb --> <% cache post do %> <div><%= link_to post.title, post %></div> <% end %>
рд░рдпрд╛рди рдмреЗрдЯреНрд╕ рдиреЗ рдЕрдкрдиреЗ
рд╕реНрдХреНрд░реЗрдВрдХрд╛рд╕реНрдЯ (рдореБрдХреНрдд) рдореЗрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рд╣реИ, рдФрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Rails 3.2 рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ
cache_digests рдЬреИрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред
рд╕реБрд░рдХреНрд╖рд╛
рд░реЗрд▓ рдиреЗ рд╣рдореЗрд╢рд╛ рд╕реБрд░рдХреНрд╖рд╛ рдмрд╛рдЬрд╛рд░ рдкрд░ рдЦрдмрд░реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдпрд╣ рд░рд┐рд▓реАрдЬ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рддрд╛рдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд╡реАрдирддрдо рд╕реБрдзрд╛рд░реЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЦреБрдж рдХреЛ рдФрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЕрдЧрд▓реЗ рджреБрд░реНрдмрд▓рддрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреА рдереА рдареАрдХ рдХрд┐рдпрд╛ рдФрд░ рдЦреБрд▓рд╛рд╕рд╛ рдореЗрдВ, рдЖрдк рд▓рдЧрд╛рддрд╛рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рд░реЗрд▓ рдЖрд╡реЗрджрди рдПрдХ рд╕рдордп рдкрд░ рдврдВрдЧ рдЕрджреНрдпрддрди рдХреА рдЬрд░реВрд░рдд рд╣реИред
рд╣рдорд╛рд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛
рд░реЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ (рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЖрд╡рдХ) рдФрд░ рдЯреНрд░реИрдХ рдХрдордЬреЛрд░рд┐рдпреЛрдВ, рд╕рдордп рдкрд░ рдЕрджреНрдпрддрди рдФрд░ рдбрд┐рдмрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдкрдиреЗ deploymenta, рдЕрдЧрд▓реЗ рднреЗрджреНрдпрддрд╛ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж рд╣рд░ рдмрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдЕрдиреНрдпрдерд╛, рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЬреНрдЮрд╛рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдЕрдЧрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдбреА рдпрд╛ рдмреЙрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рд▓рдХреНрд╖реНрдп рдмрдирд╛рддреЗ рд╣реИрдВред
рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдВрд░рдХреНрд╖рдг
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕рдВрд░рдХреНрд╖рдг рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЕрдВрджрд░ рд╡рд╕реНрддреБ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХрд╛рд▓реЗ рдпрд╛ рд╕рдлреЗрдж рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рд╕рдВрднрд╡ рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд░ рдбрд╛рд▓реЗрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреА рд╡реНрдпрдВрдЬрдиреЛрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЦрд╛рдирд╛ рдкрдХрд╛рдиреЗ) рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рддреЗ рд╣реИрдВред рдЬреЛ рдХреЛрдИ рднреА рд░реЗрд╕рд┐рдкреА рдмрдирд╛рддрд╛ рд╣реИ рдЙрд╕реЗ "рд╢реЗрдл" рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд░реЗрд╕рд┐рдкреА рдореЗрдВ рдПрдХ рдирд╛рдо, рд╕рд╛рдордЧреНрд░реА рдФрд░ рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИред рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдореБрджреНрджреЗ рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВред
<b id="internal-source-marker_0.9843547998461872">class RecipesController < ApplicationController def create @recipe = Recipe.new(recipe_params) @recipe.chef = current_user
рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдирдП рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд░реЗрд╕рд┐рдкреА.рдиреНрдпреВ рдХреЛ рд░реЗрд╕рд┐рдкреА_рдкрд░рдо рдкрджреНрдзрддрд┐, рдЬреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдирд┐рдЬреА рд╡рд┐рдзрд┐ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓реМрдЯрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрд╢ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдзрд┐ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреА рд╣реИ рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ "рдиреБрд╕реНрдЦрд╛" рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдордд рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ (рдПрдХ рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд):
{рдирд╛рдо: "рдЯреЗрдХреНрд╕рд╛рд╕ рдЪрд┐рд▓реА", рд╕рд╛рдордЧреНрд░реА: "рдЧрд░реНрдо рд╕рд╛рдорд╛рди", рд╢реЗрдл_рд┐рдб: "123"}
"Chef_id" рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ recipe_params рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ "sanitized" рд╣реИрд╢ рдХреЛ Recipe.new рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд░реЗрд╕рд┐рдкреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдХрд┐рд╕реА рднреА "рд╢реЗрдл" (рд▓реЗрдЦрдХ) рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ рдЬреЛ рд╣рдорд▓рд╛рд╡рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ред
рд░реЗрд▓ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЧрдпрд╛, рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдПрдХ рдареЛрд╕ рдмрджрд▓рд╛рд╡ рд╣реИред рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдореЙрдбрд▓ рдореЗрдВ рдзрдХреЗрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡реЗ рдЕрдм рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЕрдВрджрд░ рд╣рд▓ рд╣реЛ рдЧрдП рд╣реИрдВред рдпрд╣ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐
рдСрд╕реНрдЯрд┐рди рд╡реЗрдм рдмреИрд╢ рдкрд░ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд╕рд╛рде рдЕрд╕рд╣рдорддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рд╡рд╕реНрддреБ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИред рд╢реБрджреНрдзрддрд╛рд╡рд╛рдж рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╡рд╕реНрддреБ рддрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд╕реНрддреБ рд╕реНрд╡рдпрдВ рдЬрд╛рдирддреА рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рд░реЗрд▓ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдиреЗ рдЕрдкрдиреЗ attr_accessible / attr_protected рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ (рдкрд░реАрдХреНрд╖рдг, HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрд╡ рдЙрддреНрдкрд╛рджрди рдбреЗрдЯрд╛, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдерд╛ред
рдмрд╣рд░рд╣рд╛рд▓, рдпрд╣ рдПрдХ рджреЛрдзрд╛рд░реА рддрд▓рд╡рд╛рд░ рд╣реИред рд░реЗрд▓ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрд╛рдирдХрд╛рд░реА рджреЛ рдЪреИрдирд▓реЛрдВ рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдбреЗрд╡рд▓рдкрд░ред рдбреЗрд╡рд▓рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдирд╣реАрдВред рдЪреВрдВрдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд╣рдорд▓реЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрд╡рдпрдВ рдореЙрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬрд╛рдирдХрд╛рд░реА рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╕реНрдерд╛рди рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдЖрдк рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛ рдХреЗ рдХрдВрд╕реЛрд▓ рдпрд╛ рд╣реЗрд░рдлреЗрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдПрдХ рд╣реА рдорд╛рдЗрдЧреНрд░реЗрд╢рди)ред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ 'object.method = "foo" рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА рд╣реЛрддреА рд╣реИ, рдЖрдкрдХреЛ рдПрдХ рдЬрд╝реЛрдВрдмреА рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдорд╛рд░рддрд╛ рд╣реИред рдореЙрдбрд▓ рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЙрдбрд▓ рд╕реНрддрд░ рдкрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрднреА рднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдореМрдХрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдмреИрдХрдПрдВрдб рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рддреЗ рд╣реЛрдВред рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдкрд╛рд╕ рд▓реЗ рдЬрд╛рдиреЗ рд╕реЗ, рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рде рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рд╕рд╛рдл рд░рдЦрддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ: рдпрд╛ рддреЛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╕рдВрдЪрд╛рд▓рди, рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдирдкреБрдЯ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛, рдпрд╛ рдХрдо рд▓рдЪреАрд▓рд╛, рд▓реЗрдХрд┐рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА attr_protected / access рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ Rails 4 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ
рд╕рдВрд░рдХреНрд╖рд┐рдд_ attributes рдЬреИрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрджрд┐ рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ-рд╕реНрддрд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ Rails 3.2.x рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд
strong_parameters рдЬрд╛рдо рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЗрдбрд░
рд░реЗрд▓ 4 рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЗрдбрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рд╕реЗ рд╣рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рджреВрд╕рд░реЗ рдЫреЛрд░ рдкрд░ рдореМрдЬреВрдж рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдРрд╕реЗ рд╣реЗрдбрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдВрдб-рдпреВрдЬрд╝рд░ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рджреМрд░рд╛рди рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рд╕реНрддрд░ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛ред
рд░реЗрд▓ 4 рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЗрдбрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
config.action_dispatch.default_headers = { 'X-Frame-Options' => 'SAMEORIGIN', 'X-XSS-Protection' => '1; mode=block', 'X-Content-Type-Options' => 'nosniff' }
> ' config.action_dispatch.default_headers = { 'X-Frame-Options' => 'SAMEORIGIN', 'X-XSS-Protection' => '1; mode=block', 'X-Content-Type-Options' => 'nosniff' }
рдЖрдк рджреВрд╕рд░реЛрдВ рдХреЛ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдкреЛрд╕реНрдЯ - рдПрдЬ рдЧрд╛рдЗрдб рдкрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ редрдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЗрдЯрд╛ рдбреЗрдЯрд╛ vlklyuchat рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрди рдореЗрдЯрд╛ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рджрд┐рдЦреЗрдЧрд╛ рдирд┐рд░реНрдорд╛рдгред рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдкреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛редрдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреБрдХреАрдЬрд╝
рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреВрдЯ 4 рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреБрдХреАрдЬ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ session_store рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ 'рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛_cookie_store' рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдХреБрдХреАрдЬрд╝ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдЧрд╛ рдЬрдм рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдзреЛрдЦрд╛рдзрдбрд╝реА рдХреЛ рд░реЛрдХреЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛редрд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рднреА, рдореИрдВ рдЖрдкрдХреЛ рдЕрднреА рднреА рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪреЗрддрд╛рд╡рдиреА рджреВрдВрдЧрд╛ред рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо SHA рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ GPU рдХреНрд▓рд╕реНрдЯрд░ рдФрд░ CUDA рдкрд░ рдереЛрдбрд╝реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧред, рдФрд░ рдХреБрдХреА рдХреЗ рдЕрдВрджрд░ рдХреА рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рдЕрднреА рднреА рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдкреВрд░реЗ SHA рдкрд░рд┐рд╡рд╛рд░ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ bcrypt рдХреЗ рд▓рд┐рдПред рдФрд░ рдЕрдЧрд░ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдХреНрд╖ рдкрд░ рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛, рд╕реБрд░рдХреНрд╖рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рдд рдФрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдпрд╣ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИредрдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдзреЛрдЦрд╛рдзрдбрд╝реА рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдХреБрдХреАрдЬрд╝ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реИ, рдФрд░ рд░реЗрд▓ 4 рдореЗрдВ рдХреБрдХреАрдЬрд╝ / рд╕рддреНрд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ редрд░реЗрд▓ 4 рдореЗрдВ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛?
рд╡рд╣рд╛рдБ рдмрд╣реБрдд рдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдирд╡рд╛рдЪрд╛рд░реЛрдВ, рдЬреЛ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рд░реЗрд▓ 4.0 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рд╣реИрдВред рд╢рд╛рдпрдж 4.1 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗредрдкреГрд╖реНрдарднреВрдорд┐ рдХрддрд╛рд░реЛрдВ
рд░реЗрд▓ 4 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдкреАрдЖрдИ рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдХрддрд╛рд░реЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдереА, рдФрд░ рд╕рд╛рдЗрдбрдХреАрдХ рдФрд░ / рдпрд╛ рд░реЗрд╕реНрдХ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рдереЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдХрдореЗрдЯреА рдиреЗ рдЗрди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ , рдЗрд╕ рддрдереНрдп рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрднреА рднреА "рдЕрд░реНрдз-рдмреЗрдХреНрдб" рдереАред рд░рд╛рдлреЗрд▓ рдлреНрд░реИрдВрдХрд╛ рдиреЛрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд░реЗрд▓ 4 рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдзрд╛ рдереА, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рд╢реБрд░реБрдЖрдд рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдореБрдЦреНрдп рд░рд┐рд▓реАрдЬ рдореЗрдВ рджреЗрд░реА рди рд╣реЛредрдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ ActionMailer
рдЪреВрдВрдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдкреАрдЖрдИ рдореЗрдВ рджреЗрд░реА рд╣реЛ рд░рд╣реА рдереА, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ ActionMailer рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдореЗрдВ рднреА рджреЗрд░реА рд╣реБрдИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдХрддрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИредрдХрд╣рд╛рдВ рдФрд░ рдХрд╣рд╛рдВ
рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Book.where.not_like (рд╢реАрд░реНрд╖рдХ: "% Java%") рдореЗрдВ 'not_like' рдкрджреНрдзрддрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рдХреА рдЙрдореНрдореАрдж рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдиреЗ ActiveRecord рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛ред рдбреАрдПрдЪрдПрдЪ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдг рджреЗрддрд╛ рд╣реИ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реИред рдЙрдирдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╕рдореБрджрд╛рдп рдиреЗ рдЗрд╕реЗ ActiveRecord рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрд▓рдЧ рдЬрд╛рдо рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдЙрдирдХреА рджрд▓реАрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдбреАрдПрд╕рдПрд▓ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдиреЗ рдХреА рдЙрдирдХреА рдЕрдирд┐рдЪреНрдЫрд╛, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ_рдереЗрди_рдУрд░_рд╕реЛрд╢рд▓ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдореЗрдВ рдзрдХреЗрд▓рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рд╢рдд рдЪрд┐рд╣реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд░реВрдмреА рдореЗрдВ рдПрдХ рдЕрдЬреАрдм рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдВрдШрд░реНрд╖ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ LIKE рдХреНрд╡реЗрд░реАрдЬ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реИрдВредрдЕрдВрддрд┐рдо рд╡рд┐рдЪрд╛рд░
рд░реЗрд▓ 4 рдореЗрдВ, рд╡рд╣рд╛рдБ рдХрдИ рдирдП рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЗрдВ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд, рд╢рдмреНрджрд╛рд░реНрде рд╕рд╣реА рдФрд░ рдХреБрд╢рд▓ рдЖрд╡реЗрджрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд╕рд╛рдордиреЗ рдЖрдП, рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рд░реЗрд▓ 4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрдЬреЛ рд▓реЛрдЧ рдЕрднреА рднреА рд░реЗрд▓реНрд╕ реи.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВ рдЙрдирдХреЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдХрдо рд╕реЗ рдХрдо реи.рей.резрел (рд╕рднреА рдкреИрдЪ рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг) рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рд░реЗрд▓ рей.рей рдХреЗ рд▓рд┐рдПред рдЖрдк рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рд░рд┐рд▓реАрдЬ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЬрд▓реНрджрдмрд╛рдЬреА рди рдХрд░реЗрдВ рдФрд░ рд╕рдм рдХреБрдЫ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд░реЗрдВ, рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд╛рд╣рд╕ рд╣реИ, рддреЛ рддреБрд░рдВрдд 3.2 рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ рдФрд░ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЛрдб рдХрд╛ рдЕрдЪреНрдЫрд╛ рдХрд╡рд░реЗрдЬ рдЖрд╡реЗрджрди рдореЗрдВ рдЙрддреНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рд╣реЛрдЧрд╛, рдФрд░ рд╣рдо рд╣рдореЗрд╢рд╛ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдВ (рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рдХреНрд▓реЛрдирд┐рдВрдЧ ) рдЖрд╡реЗрджрди рдХреА рдЕрдВрддрд┐рдо рддреИрдирд╛рддреА рд╕реЗ рдкрд╣рд▓реЗредрдЖрдк рдореЗрдВ рд╕реЗ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 3.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд░реЗрд▓ 4 рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдХреБрдЫ рдмрд┐рд▓реНрдЯ-рдЗрди рдЗрдиреЛрд╡реЗрд╢рди рдХреЗ рд╕рд╛рде рдлреАрдЪрд░реНрд╕ рдХреЛ рдирдпрд╛ рд░реВрдк рджреЗрддреА рд╣реИрдВред рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреБрдХреА рд╕реНрдЯреЛрд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ рдФрд░ рдЕрдкрдиреЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрджрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдкрд░реЛрдХреНрдд рдЬрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)редрд╕рдм рд╕рдм рдореЗрдВ, рд░реЗрд▓ 4 рдХрдИ рд░реВрдкрд░реЗрдЦрд╛ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╣рд╛рди рд░рд┐рд▓реАрдЬ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВредрдЖрдЧреЗ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП:blog.remarkablelabs.com/2012/11/rails-4-countdown-to-2013blog.wyeworks.com/2012/11/13/rails-4-compilation-linksweblog.rubyonrails.org/2012/11/21/the-people-behind-rails-4edgeguides.rubyonrails.org/4_0_release_notes.htmlrubyrogues .com / 081-rr-rails-4-with-aaron-pattersonRails 4 Whirlwind Tour: vimeo.com/51181496рдпрд╣ рд▓реЗрдЦ рд╣рдорд╛рд░реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреНрд▓реЙрдЧ рдкрд░ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИредрднрд╛рдЧ 1 , рднрд╛рдЧ 2 ред J. Austin HugheyрджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдиреБрд╡рд╛рдж - рдореЗрд░рд╛ рдореЗрд░реА рдпреЛрдЬрдирд╛ рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреЗ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рд╣реИ ред рд╕реБрдЭрд╛рд╡ рдФрд░ рд╕рд▓рд╛рд╣ рд╕реБрдирдирд╛ рдмреЗрд╣рдж рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред
рдореИрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдпрджрд┐ рдореБрдЭреЗ рдкрд░реНрдпрд╛рдкреНрдд рддрдХрдиреАрдХреА рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рд╣рдорд╛рд░реЗ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рд╕реЗ рдкреВрдЫреВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!