рдкреЗрд╢ рд╣реИ рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ (рднрд╛рдЧ 2)

" рд░реВрдмреА рдкрд░ рд░реВрдмреА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ " рд▓реЗрдЦ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдореЗрдВ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ рдФрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВред

рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред



рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред





рдореИрдВ MySQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЙрджрд╛рд╣рд░рдг рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣реЛрдВрдЧреЗред



рд╡рд┐рдВрдбреЛрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ MySQL-5.0 рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред



рд▓рд┐рдирдХреНрд╕ (рдЙрдмрдВрдЯреВ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИ:



  <code class = 'sh' lang = 'sh'> $> sudo apt-get install mysql-server-5.0 libmysql-ruby </ code> 




рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:



  <code class = 'sh' lang = 'sh'> $> mysqladmin ping -u root
 mysqld рдЬреАрд╡рд┐рдд рд╣реИ </ code> 




рдпрд╣ рд╕рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдПрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП:



  <code class = 'sh' lang = 'sh'> $> mysqladmin example_development -u root рдмрдирд╛рдПрдБ
 $> mysqladmin example_test -u root </ code> рдмрдирд╛рдПрдБ 




рдЕрдм рд╣рдо config/database.yml



рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ mysql рд╕рднреА рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдкрд╛рд╕рд╡рд░реНрдб рдирд╣реАрдВред



рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ



  <code class = 'sh' lang = 'sh'> $> рд░реЗрдХ </ code> 




рдпрджрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд╣реАрдВ рдЖрдкрдиреЗ рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЧрд▓рддреА рдХреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЬрд╛рдВрдЪреЗрдВред



рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдЪрдпред





рд░реЗрд▓ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдХрдиреЗрдХреНрд╢рди OR рдореИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ ActiveRecord рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдореЗрдВ рдореИрдк рдХрд░рдиреЗ, рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╕рддреНрдпрд╛рдкрди, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред



рдПрдХ рдирдпрд╛ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ ActiveRecord::Base



рд╡рд░реНрдЧ рд╕реЗ рд╡рд╛рд░рд┐рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ



  <code class = 'ruby' lang = 'ruby'> рд╡рд░реНрдЧ рдЖрд▓реЗрдЦ <ActiveRecord :: Base
 рдЕрдВрдд </ code> 




рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, ActiveRecord рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдПрдХ рд╡рд░реНрдЧ рд╣реИ, рдХреЗрд╡рд▓ рдмрд╣реБрд╡рдЪрди рдореЗрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЗрдЦред



рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



  <code class = 'ruby' lang = 'ruby'> # рд▓реЗрдЦ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢реАрд░реНрд╖рдХ рдлрд╝реАрд▓реНрдб рд╣реЛ
 Article.create (: рд╢реАрд░реНрд╖рдХ => 'рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!')
 рдЖрд▓реЗрдЦ = Article.find (1)
 рд▓реЗрдЦ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
 # => рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб! </ Code> 




ActiveRecord рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдХрдиреНрд╡реЗрдВрд╢рди" рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╕рд╛рд░ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:







ActiveRecord рдХрдИ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВ:







ActiveRecord рдФрд░ рдЕрдиреНрдп рд╕реНрдерд╛рдкрд┐рдд рд░рддреНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ



  <code class = 'sh' lang = 'sh'> `$> gem_server` </ code> 




рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ



http: // рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ: 8808 /



рдЕрдм рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред





рд╣рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓, рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП script/generate



рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред



  <рдХреЛрдб> $> рд░реВрдмреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ scaffold_resource рд▓реЗрдЦ рд╢реАрд░реНрд╖рдХ: string body_format: string body: text / a /> 




рдореИрдВ рдкрд╛рда рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд▓реЗрдЦ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдСрдирд▓рд╛рдЗрди рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред



рд░реЗрд▓ рдиреЗ рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рджреЗрдЦреЗрдВ:







рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЪрд▓реЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рджреЗрдЦреЗрдВред рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ 7 рддрд░реАрдХреЗ рд╣реИрдВ:







рд▓рд╛рдЗрди map.resources :articles



config/routes.rb



рдореЗрдВ map.resources :articles



рдЖрд╡рд╢реНрдпрдХ URL рд░реВрдЯрд┐рдВрдЧ рдирд┐рдпрдо рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдмрдирд╛рдП рдЧрдП url рдХреНрдпрд╛ рд╣реИрдВ:







PUT рдФрд░ DELETE HTTP рддрд░реАрдХреЗ рд╣реИрдВ рдЬреИрд╕реЗ GET рдФрд░ POSTред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛, рдЬреЛ рдХрд┐ рдпреВрдЖрд░рдПрд▓ рдХреЗ рдЫреЛрдЯреЗ рд╕реЗрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред



рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд░рд┐рд╕реЛрд░реНрд╕ рд╕реЗрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░рд╛рд░реВрдк рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд (urls рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛) REST рдХрд╣рд▓рд╛рддрд╛ рд╣реИред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░рд╣реАрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ (рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА url рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ), рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдорд╛рдкрдиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред



рдЪреВрдВрдХрд┐ рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ url рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рджреЛ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрдареЛрдВ рдХреЛ url рдореЗрдВ рд╕рдВрдХреЗрддрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рджреЗрдирд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рди рд╣реЛрдиреЗ рдкрд░ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред рдЗрд╕рд▓рд┐рдП, REST- рд╢реИрд▓реА рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдФрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред



рдЖрдЗрдП рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ, рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ



  <code class = 'sh' lang = 'sh'> `$> рд░реВрдмреА рд▓рд┐рдкрд┐ / рд╕рд░реНрд╡рд░` </ code> 




рдФрд░ рдЬрд╛рдУ



http: // localhost: 3000 / рд▓реЗрдЦ



рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:



  <code> Mysql :: рддреНрд░реБрдЯрд┐: рддрд╛рд▓рд┐рдХрд╛ 'example_development.articles' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ: рд▓реЗрдЦреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ * / рдИрдореЗрд▓> 




рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреЛрдИ articles



рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ; рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред



рд░реЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░реЗрд▓ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╡рд╛рд╕ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ - articles



рддрд╛рд▓рд┐рдХрд╛ ( db/migrate/001_create_articles.rb



) рдмрдирд╛рдирд╛ред рд╣рдореЗрдВ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ



  <code> $> rake db: рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ </ code> 




рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓реЗрдЦ рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдереА, рдФрд░ рдЕрдм рд╣рдо F5 рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред



рд░реЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред





рд░реЗрдХ make



, ant



, maven



рдЬреИрд╕реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред

рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░реЗрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░реЗрдВ:



  <code class = 'sh' lang = 'sh'> $> rake -T </ code> 




рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рд░реЗрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдп рд░реВрдмреА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдФрд░ рд░рд╛рдХрдлрд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ require 'tasks/rails'



рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ db:migrate



рд╡рд┐рд╡рд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ db:migrate



рдХрд╛рд░реНрдп:



  <code class = 'ruby' lang = 'ruby'> desc "рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ d / migrate рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВред VERSION = x рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд▓рдХреНрд╖рд┐рдд рдХрд░реЗрдВред"
 рдХрд╛рд░реНрдп: рдорд╛рдЗрдЧреНрд░реЗрдЯ =>: рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд░рддреЗ рд╣реИрдВ
   ActiveRecord :: Migrator.migrate ("db / migrate /", ENV ["рд╕рдВрд╕реНрдХрд░рдг"]? ENV ["рд╕рдВрд╕реНрдХрд░рдг"]ред To_i: nilред
   рд░реЗрдХ :: рдЯрд╛рд╕реНрдХ ["db: рд╕реНрдХреАрдорд╛: рдбрдВрдк"]ред рдпрджрд┐ ActiveRecord :: Base.schema_format ==: рдорд╛рдгрд┐рдХ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдВ
 рдЕрдВрдд </ code> 




рд░реЗрдХ рдХреА рд╕реБрдВрджрд░рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг рдирд┐рдпрдорд┐рдд рд░реВрдмреА рдХреЛрдб рд╣реИред рдпрд╣ ant



рдпрд╛ maven



рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред



рдорд╛рд░реНрдЯрд┐рди рдлрд╛рдЙрд▓рд░ рдХрд╛ рд░реЗрдХ рдкрд░ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ рд╣реИред



рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд░реЗрдХ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ред рдЕрдм рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ db:migrate



рдХрд╛рд░реНрдп рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╡рд╛рдкрд╕ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдФрд░ рд░реЛрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо db/migrate/001_create_articles.rb



рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ CreateArticles



рд╡рд░реНрдЧ рдореЗрдВ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ: рдКрдкрд░ рдФрд░ рдиреАрдЪреЗред рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рдирдВрдмрд░ 001



рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдХреНрд░рдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд░реЗрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрдИ рдмрд╛рд░ рд▓рд╛рдЧреВ рди рд╣реЛред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ db:migrate



рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ db:migrate



VERSION рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде db:migrate



рдХрд░реЗрдВ:



  <code> $> rake db: VERSION = 0 </ code> рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ 




рдирддреАрдЬрддрди, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╢реВрдиреНрдп рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдХреЛрдИ рддрд╛рд▓рд┐рдХрд╛ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред рддрдм рдЖрдк db:migrate



рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ db:migrate



рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдлрд┐рд░ рд╕реЗ db:migrate



рдХрд░реЗрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рднреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд╛рдЧреВ рд╣реЛрдВрдЧреЗред



рдХреИрдЯрд▓реЙрдЧ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдирд╣реАрдВ рд╣реИрдВред





рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреИрдЯрд▓реЙрдЧ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ред рд▓реЗрдЦ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп - рдЖрд▓реЗрдЦреЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдирд╛ред



рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╛рд░реВрдкрдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ, рдЕрдм рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдерд╛, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рд╕реАрдзреЗ рдЗрд╕рдореЗрдВ рд╕реНрдерд┐рдд рдерд╛, Article



рдореЙрдбрд▓ рдЕрдм рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдХреЛрдб рдХреЛ рдореЙрдбрд▓ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдЦреНрддреА рд╕реЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдФрд░ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ рдХрд┐ рд╣рдо рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЙрд╕ рдореЙрдбрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рд╣рдо рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦреЗрдВрдЧреЗред





рдкрдЯрд░рд┐рдпреЛрдВ рдкрд░, рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рд╛рд░реВрдкрдг рдХреЛрдб рдХреЛ рдореЙрдбрд▓ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЗрд╕реЗ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред



рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕реНрд╡рд░реВрдкрдг рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:



  <code> рд╡рд░реНрдЧ рдЖрд▓реЗрдЦ <ActiveRecord :: Base
   рдХреГрддреНрдпреЛрдВ_рд╕_рд░реВрдкрддрд╛: рд╢рд░реАрд░
 рдЕрдВрдд </ code> 




рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрд░реЛрдд рдкрд╛рда body



рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╣реИ, рдФрд░ рд▓реЗрдЦ рдХрд╛ рд╕реНрд╡рд░реВрдкрд┐рдд рдкрд╛рда body_as_html



рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рдкреНрд░рд╛рд░реВрдк рдЬрд┐рд╕рдореЗрдВ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, body_format



рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╣реИред



рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдХрдВрдХрд╛рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрд▓ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВрдЧреЗ:



  <рдХреЛрдб> $> рд░реВрдмреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдкреНрд▓рдЧрдЗрди рдПрдХреНрдЯ_рд╕_рдлреЙрд░реНрдордЯреЗрдб </ рдХреЛрдб> рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ 




рд╣рдорд╛рд░рд╛ vendor/plugins



рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ:







рдЕрдм рдпрд╣ рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдФрд░ ActiveRecord рдореЗрдВ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред



рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ? рдХрд╛рд░реНрдп ActiveRecord::Base



рдХреЗ acts_as_formatted



рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдФрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рд╕реНрд╡рд░реВрдкрдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд░реВрдмреА рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рд░реВрдмреА рдореЗрдВ рдПрдХ рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВред





рд░реВрдмреА рдореЗрдВ, рдЗрд╕ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред



  <code class = 'ruby' lang = 'ruby'> рдкреНрд░рд┐рдВрдЯ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!" </ code> 




рд╡рд╕реНрддреБ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреМрди рд╕реА рд╡рд╕реНрддреБ? рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдореЙрдбреНрдпреВрд▓ (рдирд╛рдо рд╕реНрдерд╛рди, рдкреИрдХреЗрдЬ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ) рдХреА рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрд░реНрдиреЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рдореЗрдВ рднрд┐рдиреНрдирддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рд╡рд┐рдзрд┐рдпрд╛рдБ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рд░реВрдмреА рдЖрдкрдХреЛ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ (рдорд┐рдХреНрд╕рд┐рди) рдореЙрдбреНрдпреВрд▓ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ extend



рдФрд░ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ include



рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:



  <code class = 'ruby' lang = 'ruby'> рд╡рд░реНрдЧ MyClass
   рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп
 рдЕрдВрдд </ code> 




рдпрд╛



  <code class = 'ruby' lang = 'ruby'> рд╡рд░реНрдЧ MyClass
 рдЕрдВрдд

 MyClass.extend (Enumerable) </ code> 




рдЙрд╕реА рд╕рдордп, Enumerable



рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ, рд╕реНрдерд┐рд░рд╛рдВрдХ, рд╡рд░реНрдЧ рдФрд░ рдореЙрдбреНрдпреВрд▓ MyClass



рд╡рд░реНрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред



рд╣рдо рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред





рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдХреЗ рд▓рдЧрднрдЧ рд╕рднреА acts_as_formatted.rb



рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдВрдЧреЗред



рдкреНрд▓рдЧрдЗрди рдореЗрдВ рджреЛ рдореЙрдбреНрдпреВрд▓ рд╣реЛрддреЗ рд╣реИрдВ:







рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ acts_as_formatted



рд╡рд┐рдзрд┐ред

рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкреНрд░рд╛рд░реВрдк рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, body_format



, body_as_html



), рдлрд┐рд░ рд╣рдо рдПрдХ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░рд╛рд░реВрдк рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рдорд╛рдиреНрдп рдкреНрд░рд╛рд░реВрдк рд╣реИ (рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ "рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛"), рдФрд░ рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рд╕рдорд░реНрдерд┐рдд рдкреНрд░рд╛рд░реВрдк рдФрд░ рд╕реНрд╡рд░реВрдкрд┐рдд рдлрд╝реАрд▓реНрдбреНрд╕ body_as_html



( body_as_html



рдФрд░ body_as_html



)ред



рд╕рднреА рд╕реНрд╡рд░реВрдкрдг рдХрд╛рд░реНрдп ActiveRecord::Acts::ActsAsFormatted::Formatting



рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдкрд╛рда рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддреА рд╣реИрдВ: format



, format_markdown



рдФрд░ format_textile



, рдФрд░ format_markdown



рд╡рд┐рдзрд┐, рдЬреЛ рд╕рдорд░реНрдерд┐рдд рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛрддреА рд╣реИред



рдЕрдм init.rb



рдЖрд░рдВрднреАрдХрд░рдг рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:



  <code class = 'ruby' lang = 'ruby'> рдХреЗ рд▓рд┐рдП 'act_as_formatted' рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

 ActiveRecord :: Base.extend (ActiveRecord :: Acts :: ActsAsFormatted :: ClassMethods) </ code> 




рдФрд░ рдЖрдк рд╡реНрдпрд╛рдкрд╛рд░ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рд╣рдо рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдХрдВрдШреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд░рддреЗ рд╣реИрдВ





рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирдП рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рд░реВрдкреЛрдВ рдореЗрдВ рдХреЛрдб рдбреБрдкреНрд▓реАрдХреЗрд╢рди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ рдФрд░ рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рдЖрдк рд▓реЗрдЦ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рдкрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ URL рдФрд░ рднреЗрдЬрдиреЗ рдХреА рд╡рд┐рдзрд┐ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬреЛ URL рдФрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдЧрд╛, рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдпрд╛ рдПрдХ рд▓реЗрдЦ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред



рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣реЗрд▓реНрдкрд░реНрд╕ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рд░реЗрд▓ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╣рдо рдХреЛрдб рдХреЛ app/helpers/application_helper.rb



ред edit_form_for



рд╡рд┐рдзрд┐ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореЙрдбрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП, рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреЙрд░реНрдо рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред submit_edit



рдФрд░ cancel_edit



рдлрд╝реЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди рдмрдирд╛рддреА рд╣реИрдВ рдФрд░ рдлрд╝реЙрд░реНрдо рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рддреА рд╣реИрдВред



рдЕрдм рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╢реНрдп рдмрдирд╛рдПрдВред рд░реЗрд▓ рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рднрд╛рдЧрд╡рдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдВрд╢рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдЙрд╕реА рдЬрдЧрд╣ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ , рдЬрд╣рд╛рдВ рдХреЗ рджреГрд╢реНрдп рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред



рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рдж, new



рдФрд░ edit



рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЖ рдЬрд╛рддрд╛ рд╣реИ:



  <code class = 'ruby' lang = 'ruby'> <% = рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛: рдЖрдВрд╢рд┐рдХ => 'рд▓реЗрдЦ' ,: рд╡рд╕реНрддреБ => @ рд▓реЗрдЦ%> </ code> 




рдпрд╣ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдПрдХ preview



рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ рдЬреЛ рд▓реЗрдЦ рдХреЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдкрд╛рда рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред



  <code class = 'ruby' lang = 'ruby'> def рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди
   рд▓реЗрдЦ = Article.new (рдкрд░рдо: [рд▓реЗрдЦ])
   рд░реЗрдВрдбрд░_рдЯреЗрдХреНрд╕реНрдЯ рд▓реЗрдЦ .body_as_html
 рдЕрдВрдд </ code> 




рдлрд┐рд░ рд╣рдо рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдореЗрдВ рдирд┐рдпрдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред



  <code class = 'ruby' lang = 'ruby'> map.resource: рд▓реЗрдЦ,
               : рд╕рдВрдЧреНрд░рд╣ => {: рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди =>: рдХреЛрдИ} </ code> 




рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ url /articles;preview



рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдЬреЛрдбрд╝рддреА рд╣реИ /articles;preview



ред :collection



рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ url ( /articles



) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп :collection



рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :member



, рдлрд┐рд░ рдпреВрдЖрд░рдПрд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдЦ ( /articles/:id



) рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЖрдкрдХреЛ рдмрдирд╛рдП рдЧрдП рд▓реЗрдЦреЛрдВ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред :any



рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА HTTP рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╕рдордп POST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдВрдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп PUT рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рдЕрдм рдлрд╝реЙрд░реНрдо рдореЗрдВ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВред рдХреЛрдб рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВрдЧреЗред рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдмрдЯрди рдмрдирд╛рддрд╛ рд╣реИ, рдЬрдм рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдкрддреНрд░ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рддрддреНрд╡ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред рдпрд╣ рджреГрд╢реНрдп рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рд▓реЗрдЦ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди рдФрд░ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред



рдЪреВрдВрдХрд┐ рдкреНрд░реАрд╡реНрдпреВ рдмрдЯрди рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдХреА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдкреЗрдЬ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред



  <code class = 'ruby' lang = 'ruby'> <% = javascript_include_tag 'рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк'%> </ code> 




рдЗрд╕ рдкрд░, рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреВрд░реНрдг рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдЕрдм рдЖрдк рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдмрдЪреЗ рд╣реБрдП рдХреЛрдб рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред



  <code> рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдирд┐рдпрдВрддреНрд░рдХ рдЗрдирдкреБрдЯ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЛ рдирд╖реНрдЯ рдХрд░реЗрдВ </ code> 




рдФрд░ рдЕрдВрдд рдореЗрдВред



рд╣реЛрд╕реНрдЯрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ред





рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЖрдкрдХреЗ рд▓рд┐рдП рдШрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИред рдХрдИ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдЖрдо рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд░рддреНрди рдЧрд╛рдпрдм рд╣реИрдВ, рдпрд╛ рд╣реЛрд╕реНрдЯрд░ рдХрд╛ рдЧрд▓рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдкрд░ рдФрд░ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдкрдЯрд░рд┐рдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд░реЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ:



  <рдХреЛрдб> $> рд░реЗрдХ рд░реЗрд▓: рдлреНрд░реАрдЬ: рд░рддреНрди </ рдХреЛрдб> 




рдирддреАрдЬрддрди, рд░реЗрд▓ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, vendor/rails



рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдФрд░ рд╕рд░реНрд╡рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдм рдпрд╣ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХрд┐ рдореЗрдЬрдмрд╛рди рдХреЗ рдкрд╛рд╕ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред



рд░реЗрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрд╡реЗрджрди рдЕрдХреНрд╕рд░ рдХреБрдЫ рд░рддреНрдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд░реЗрдбрдХреНрд▓реЛрде рдФрд░ рдорд╛рд░реБрдХреБ рд╣реИред рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЙ рдирд┐рдХ рдиреЗ рдПрдХ рдорд╣рд╛рди рдкреНрд▓рдЧрдЗрди - рд░реЗрд▓реНрд╕ рдкрд░ рд░рддреНрди рд▓рд┐рдЦрд╛ред рдпрд╣ рдПрдХ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд░рддреНрдиреЛрдВ рдХреА рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐рдпрд╛рдВ рдмрдирд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВ:



  <code> $> рдордгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ gemonrails </ code> 




рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ



  <рдХреЛрдб> $> рд░рддреНрдиреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣
 рд░рддреНрдиреЛрдВ рдХреЛ____ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ 0.6.4 ./vendor/plugins/gemsonrails </ code> рдкрд░ 




рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Gems on Rails plugin рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЬрд┐рд╕рдиреЗ рд░реЗрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗ рд╣реИрдВред



  <рдХреЛрдб> $> рд░реЗрдХ-рдЯреА
 ...
 рд░реЗрдХ рд░рддреНрдиреЛрдВ: рдлреНрд░реАрдЬ # рд░реВрдмреАрдЧреЗрдо рдХреЛ рдЗрд╕ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдлреНрд░реАрдЬ рдХрд░реЗрдВ;  init.rb рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
 рд░реЗрдХ рд░рддреНрдиреЛрдВ: рд▓рд┐рдВрдХ # рд▓рд┐рдВрдХ рдПрдХ RubyGem рдЗрд╕ рд░реЗрд▓ рдЖрд╡реЗрджрди рдореЗрдВ;  init.rb рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
 рд░реЗрдХ рд░рддреНрдиреЛрдВ: рдЗрд╕ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ # рдЕрдирдлрд╝реНрд░реАрдЬрд╝ / рдЕрдирдлрд╝реНрд░реАрдЬрд╝ / рдПрдХ рд░реВрдмреАрдЧреИрдо рдХреЛ рдЕрдирд▓рд┐рдВрдХ рдХрд░реЗрдВ
 ... </ code> 








рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд░рддреНрдиреЛрдВ рдХреА рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐рдпрд╛рдВ рдмрдирд╛рдПрдВ:



  <рдХреЛрдб> $> рд░реЗрдХ рд░рддреНрди: рдлреНрд░реАрдЬ GEM = рдорд╛рд░реБрдХреБ
 $> рд░реЗрдХ рд░рддреНрди: GEM = redcloth </ code> рдлреНрд░реАрдЬ рдХрд░реЗрдВ 




рдореЗрд░реЗ vendor/gems



рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ RedCloth-3.0.4



maruku-0.5.6



рдФрд░ RedCloth-3.0.4



рдлрд╝реЛрд▓реНрдбрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдПред



рд╡рд╣ рд╕рдм рд╣реИред рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ, рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝реЗрдВ рдФрд░ рдкрдЯрд░рд┐рдпреЛрдВ рдкрд░ рдПрдХ рдХрд┐рддрд╛рдм ред



рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реИ!





рдкреБрдирд╢реНрдЪред рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдореИрдВ рд░реЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ред



All Articles