рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!
рд╕рд┐рдирд╛рддреНрд░рд╛ рдХреНрдпрд╛ рд╣реИ
рд░реВрдмрд╛рдИ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛
рд╕рд┐рдирд╛рддреНрд░рд╛ рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рджрд┐рд▓рдЪрд╕реНрдк рдбреАрдПрд╕рдПрд▓ (рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛) рдврд╛рдВрдЪрд╛ рд╣реИред рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдПрдорд╡реАрд╕реА рдкреИрдЯрд░реНрди (рдореЙрдбрд▓ - рд╡реНрдпреВ - рдХрдВрдЯреНрд░реЛрд▓рд░) рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рд┐рдирд╛рддреНрд░рд╛ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдереА рдХрд┐ тАЬрдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рд░реВрдмреА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд▓реНрджреА рд╕реЗ рдмрдирд╛ рд╕рдХреЗред
рд╕рд┐рдирд╛рддреНрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдирд┐рдореНрди рдЖрджреЗрд╢ рд░реВрдмреАрдЬреАрдореНрд╕ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдордгрд┐ рд╕реНрдерд╛рдкрд┐рддрд╣рдореЗрдВ
рд╢реЙрдЯрдЧрди рдирд╛рдордХ рд░рддреНрди рднреА рдЪрд╛рд╣рд┐рдПред рд╣рдореЗрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмрдиреНрджреВрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд░реЗрдЧреАред рдЖрдЗрдП рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
рдордгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдмрдиреНрджреВрдХрдЦреИрд░, рдпрд╣ рдмрд╛рдд рд╣реИ! рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд╕рдм рдХреБрдЫ рд╣реИред рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ...
рдирдорд╕реНрддреЗ рд╕рд┐рдирд╛рддреНрд░рд╛!
рдФрд░ рд╣рдо рдПрдХ рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдЦреБрдж рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдкреВрд░реА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдлреНрд░реИрдВрдХ рдЕрдкрдиреА рдХрдмреНрд░ рдореЗрдВ рдирд╣реАрдВ рд▓реБрдврд╝рдХреЗрдЧрд╛ред рддреЛ, рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди:
require "sinatra" get "/" do "Hello, Sinatra!" end
рдпрд╣ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЖрдк рдирд┐рдореНрди рдЖрджреЗрд╢ рд▓рд┐рдЦрдХрд░ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд░реВрдмреА -rubygems path_to_file \ app.rbрдЕрдм рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдСрдореНрдирд┐рдмреЙрдХреНрд╕ рдореЗрдВ, рдЖрдкрдХреЛ
рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдПрдбреНрд░реЗрд╕ рдбрд╛рдпрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
: 4567 ред рджреЗрдЦрд╛!

рдмрдзрд╛рдИ! рд╣рдордиреЗ рд╕рд┐рдирд╛рддреНрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд╣рд▓рд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрд╛ред
рдбреАрдмреНрд░реАрдлрд┐рдВрдЧ
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдерд╛, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рджреБрдЦ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
рд╢реБрд░реБрдЖрдд рд╕реЗ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг 1.9 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк рд╕рдВрд╕реНрдХрд░рдг 1.8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдПрдХ рдФрд░ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреА рд╣реЛрдЧреАред рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ:
require "rubygems"
рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдкрддрд╛ рдмрд╛рд░ рдореЗрдВ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╣реЛрдо, рдЬрд╣рд╛рдВ рд╣рдо рдлреНрд░реИрдВрдХ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
/ рдкрддрд╛ рдмрд╛рд░ рдХреЗ
рдмрд╛рд░реЗ рдореЗрдВ, рддреЛ рдЙрд╕реЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА:

рдЖрдЗрдП
Not Not error рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдирд┐рдореНрди рддрд░реАрдХреЗ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
not_found do status 404 "Something wrong! Try to type URL correctly or call to UFO." end
рдЕрдм
рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ
: 4567 / рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЖрдкрдХрд╛ рдкреЗрдЬ рджреЗрдЦреЗрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрд▓рдд рдерд╛ред
рд╣реИрд▓реЛ% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%
рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рд╣рдо рдлреНрд░реИрдВрдХ рд╕реЗ рдорд┐рд▓реЗ рдереЗ, рд▓реЗрдХрд┐рди рд╡рд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рднрдЧрд╡рд╛рди рди рдХрд░реЗ, рдмрд┐рд▓реНрдХреБрд▓ред рд▓реЗрдХрд┐рди рд╣рдо рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЛ рд╣рдорд╛рд░рд╛ рдЕрднрд┐рд╡рд╛рджрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣
рдирд╛рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
get "/hello/:name" do "Hello, #{params[:name]}." end
рдпрд╣ рдХреЗрд╡рд▓
рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ
: 4567 / рд╣реИрд▓реЛ / your_name рдФрд░ рдЖрдк рдЕрдкрдиреЗ рдкрддреЗ рдкрд░ рдПрдХ рдЧреНрд░реАрдЯрд┐рдВрдЧ рджреЗрдЦреЗрдВрдЧреЗред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдореИрдВ рд╡рд╣реАрдВ рд╣реВрдВ рдЬрд╣рд╛рдВ рддреБрдо рд╣реЛ
рдпрд╣ рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ рд╣рдо рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рд╡рд╣ рдХрд┐рд╕ рдкрддреЗ рдкрд░ рдЯрд╛рдЗрдк рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╕реНрд▓реИрд╢ рдХреЗ рдмрд╛рдж рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣:
get "/*" do "It's the main page of this site you can see right now!" end
рдЕрдм рдЖрдк рдЬрд╣рд╛рдБ рднреА рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╡рд╣реА рдкреЗрдЬ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рд╡реИрд╕реЗ, рдпрд╣рд╛рдБ рд╡рд╣ рд╣реИ:




рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди
рд╕реНрдкреИрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣:
get "/*" do "I don't know what is the #{params[:splat]}. It's what you typed." end
рджреЗрдЦрд╛! рддрд╛рдХрд┐ рд╣рдо рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рдЯрд╛рдЗрдк рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ рдпреВрдЖрд░рдЖрдИ рджреЗрдЦреЗрдВред


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