рдмреЗрд╣рддрд░ рдмрдВрдбрд▓ рд╕реАрдЦреЗрдВ

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



рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдФрд░ рдкреБрд░рд╛рдирд╛


рдЖрдк рд╢рд╛рдпрдж рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд░реВрдВрдЧрд╛ред рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рд░рди рдХрд░реЗрдВред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдкрдиреЗ рдЕрднреА-рдЕрднреА рдЧрд┐рдЯ рдкреБрд▓ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдирдП рдЬрд╛рдо рджрд┐рдЦрд╛рдИ рджрд┐рдП? рдмрдВрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ред рдЕрдЧрд░ рдЖрдкрдиреЗ рдЕрднреА рдирдП рдЬреИрдо рдЬреЛрдбрд╝реЗ рд╣реИрдВ рдпрд╛ рдЬреЗрдордлрд╛рдЗрд▓ рдореЗрдВ рдЬреИрдо рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓реЗ рд╣реИрдВ? рдмрдВрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ред рдмрдВрдбрд▓ рдЕрдкрдбреЗрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рди рдХреЗрд╡рд▓ рдЬрд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ - рдпрд╣ рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╣рд░ рдЬрд╛рдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЖрдкрджрд╛ рдХрд╛ рдорддрд▓рдм рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереАред
рдЕрдкрдбреЗрдЯ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЬрд╛рдо рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рд╣реЛрдВ рдФрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ рдЬреЛ рдЖрдкрдХреЗ рдЬреЗрдордлрд╛рдЗрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЕрджреНрдпрддрди рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рдо рдХреА рд╕реВрдЪреА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдмрдВрдбрд▓ рдХреЛ рдЪрд▓рд╛рдПрдВред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЕрдкрдбреЗрдЯ GEM рдпрд╛ рдмрдВрдбрд▓ рдЕрдкрдбреЗрдЯ рдЪрд▓рд╛рдПрдВред рдЙрдиреНрдирдпрди рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдирдП Gemfile.lock рдХреЛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ!

рджрд┐рдЦрд╛рдУ рдФрд░ рдЦреЛрд▓реЛ


рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдмрдВрдбрд▓ рд╢реЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬреЛ рдЬрд╛рдо рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╕реНрдерд╛рдкрдирд╛ рд╕рдлрд▓ рд╣реЛрддреА рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрдВрдбрд▓ рдУрдкрди рдХрдорд╛рдВрдб, рдЬреЛ рддреБрд░рдВрдд рдЖрдкрдХреЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЬрд╛рдо рдЦреЛрд▓рддрд╛ рд╣реИ, рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдиреНрдпреВрдирддрд░ рдбреЗрдореЛ рд╣реИ:
$ bundle install Fetching gem metadata from https://rubygems.org/.......... Resolving dependencies... Installing rack (1.5.2) Using bundler (1.3.1) Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. $ echo $EDITOR mate -w $ bundle open rack 


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

рдЦреЛрдЬ


рд╢реЛ рдХрдорд╛рдВрдб рдХреЗ рдкрд╛рд╕ рдЕрдм рддрдХ рдПрдХ рдФрд░ рдЯреНрд░рд┐рдХ рд╣реИ: рдмрд╕реНрд╕ рд╢реЛ - рдкреИрдереНрд╕ ред рд╕рднреА рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рднреА рдЬрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЦреЛрдЬрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ ActionDispatch :: RemoteIp рдХрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ? рдмрд╕ рдПрдХ рдкрдВрдХреНрддрд┐:
 $ grep ActionDispatch::RemoteIp `bundle show --paths` 

рднрд▓реЗ рд╣реА рдЖрдк grep, ack рдпрд╛ ag рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╣ рд╢реЗрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рд┐рд░реНрдл рдХреБрдЫ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╣реИрдВ:
 function back () { ack "$@" `bundle show --paths` } 

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рдЦреЛрдЬ рдФрд░ рднреА рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬрд╝ рд╣реЛ рдЧрдИ рд╣реИ:
 $ back ActionDispatch::RemoteIp 


Binstubs


рдмрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ (рд╢рд╛рдпрдж) рд╣рд░ рдмрд╛рд░ рдЬрдм рднреА рдЖрдк рдЕрдкрдиреА рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрдВрдбрд▓ рдПрдЧреНрдЬреАрдХреНрдпреВрд▓реЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдмреБрдВрдбрд▓рд░ рдмрдВрд╕реНрдЯрдм рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ ред рдмрдВрдбрд▓ Binstubs GEM рдЪрд▓рд╛рдХрд░, рдЖрдк рдмрд┐рди / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдЯрдмреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рд╕реНрдЯрдмреНрд╕ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдФрд░ рд╕рд╣реА рдЬреИрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓реЛрдб рдХрд░ рджреЗрдВрдЧреЗред рдпрд╣рд╛рдБ rspec рдХреЗ рд▓рд┐рдП binstub рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
 $ bundle binstubs rspec-core $ bin/rspec spec No examples found. Finished in 0.00006 seconds 0 examples, 0 failures 

рдмрд╛рд░-рдмрд╛рд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЖрдк cronjob рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП binstubs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ binstubs рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЛрдб рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡реЗ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд░реЗрд▓ 4 рдЕрдиреБрдХреВрд▓рд┐рдд рдмрдВрдмреНрд╕ рд╣реИрдВ рдФрд░ рдмрд┐рди / рд░реЗрд▓ рдФрд░ рдмрд┐рди / рд░реЗрдХ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВрдЧреАред рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЬреЗрдордлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ


рдореИрдВрдиреЗ рдХрдИ рд╢рд┐рдХрд╛рдпрддреЗрдВ рджреЗрдЦреА рд╣реИрдВ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдпрд╛ Gemfile рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 'https://rubygems.org/' рд╕реНрд░реЛрдд рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдмрдВрдбрд▓ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛! рдЬрдм рдЖрдк рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдПрдХ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ Rubygems.org рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдЬреЗрдордлрд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 $ bundle init 

рдЕрдм рдЖрдк рдЬрд╛рдо рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЕрдкрдиреА рдЦреБрд╢реА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ!

рд╕реНрдерд╛рдиреАрдп рдЧрд┐рдЯ рдЬрд╛рдо


рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдкреВрдЫрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЬреЗрдордлрд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЛрд╕ рд╡рд╛рд▓рд┐рдо рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдмрдВрдбрд▓рд░ 1.2 рдпрд╣ рдмреЗрд╣рдж рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЧрд┐рдЯ рдХреНрд▓реЛрди рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдПрдЧреА рдХрд┐ рдЖрдкрдиреЗ рдХреМрди рд╕рд╛ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд░реИрдХ рдХреА рд╕реНрдерд╛рдиреАрдп рдЧрд┐рдЯ рдХреЙрдкреА рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ:
 $ echo "gem 'rack', :github => 'rack/rack', :branch => 'master'" >> Gemfile $ bundle config local.rack ~/sw/gems/rack $ bundle show rack /Users/andre/sw/gems/rack 


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

рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг


1.2 рдмрдВрдбрд▓рд░ рдХреА рдПрдХ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдз рд╣реИред рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░реВрдмреА рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ Gemfile рдореЗрдВ рдмрд╕ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ, рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
 ruby '1.9.3' 

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

рдирд┐рд░реНрднрд░рддрд╛ рдЖрд░реЗрдЦ


рдмрдВрдбрд▓ рдПрдХ рддрдерд╛рдХрдерд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдордлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЬрд╛рдо рдФрд░ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЪрд┐рддреНрд░рдордп рдЖрд░реЗрдЦ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдпрд╣реА рдмрдВрдбрд▓ рдмрдВрдбрд▓ рдХрдорд╛рдВрдб рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╡рд┐рдЬрд╝ рдФрд░ рд░реВрдмреА-рдЧреНрд░рд╛рдлрд╡рд┐рдЬрд╝ рдЬрд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
 $ brew install graphviz $ gem install ruby-graphviz $ bundle viz 

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


рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрдИ.рдЖрд░.рдмреА.


рдмрдбрд╝реЗ рд╕рдорд╛рдкрди рд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЦрд┐рд░реА рдЯрд┐рдк рд╣реИ: рдЯреАрдо рдХрдВрд╕реЛрд▓ред рдмрдВрдбрд▓ рдХрдВрд╕реЛрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ рди рдХреЗрд╡рд▓ рдЖрдИрдЖрд░рдмреА рдкреНрд░реЙрдореНрдкреНрдЯ рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛, рдмрд▓реНрдХрд┐ рдкреВрд░рд╛ рдкреИрдХреЗрдЬ рдФрд░ рд╕рднреА рдЬрд╛рдо рднреА рд▓реЛрдб рд╣реЛрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЬрд╛рдо рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рд░реЗрд▓ рдХрдВрд╕реЛрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрд▓ рдЬрд╛рдо рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
 $ bundle console >> Rack::Server.new => #<Rack::Server:0x007fb439037970 @options=nil> 


рдПрдХ рдирдпрд╛ рдЬрд╛рдо рдмрдирд╛рдПрдБ


рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░, рд╕рднреА рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдХреЗ рдмрд╛рдж рдмрдВрдбрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдХреНрдпрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдмрдВрдбрд▓ рдХреЛ рдЬрд╛рдо рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдЯреАрдо рдХреЛ рдкреНрд░рдмрдВрдз рдХрд░рдиреЗ рдФрд░ рдЬрд╛рдо рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдмрд╕ рдмрдВрдбрд▓ рдордгрд┐ NAME рдЪрд▓рд╛рдХрд░ рдЕрдкрдиреЗ рдЬрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд░рддреНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛, рд░реАрдбрдореА рдФрд░ рдХрд╛рдо рдХреА рдлрд╛рдЗрд▓реЗрдВ, рдЬрд╣рд╛рдВ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдкрдиреЗ рдХреЛрдб рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд░реЗрдХ рдЗрдВрд╕реНрдЯреЙрд▓ рдЪрд▓рд╛рдХрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЗрд╕ рдЬрд╛рдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдЬрд╛рдо рд╕реЗ рдЦреБрд╢ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд░реЗрдХ рд░рд┐рд▓реАрдЬрд╝ рдЪрд▓рд╛рдХрд░ рдЬрд╛рдо рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ rubygems.org рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЬрд╛рдо рдХреЛ рдЧрд┐рдЯ рдЬрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк (рдФрд░ рдЗрд╕ рдЬрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд╕рднреА) рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдмрджреНрдз рдХреЛ рдХреЙрдкреА, рд╕рдВрдкрд╛рджрд┐рдд рдФрд░ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛


рдЕрдм рдЬрдм рдЖрдк рдмрдВрдбрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рдмрд╛рддреЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрд╛рдо рдмрдирд╛рдПрдБ!
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдмрдВрдбрд▓рд░ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреЛ рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд░реВрдмреА рдХреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рддрд╛ рд╣реИред

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

Source: https://habr.com/ru/post/In172807/


All Articles