рд░рд╛реЗрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓

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



рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдХреНрдпрд╛ рд╣реИрдВ?


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



./configure

make

make install









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



рд░реЗрдХ рдФрд░ рдЕрдиреНрдп рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ред


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд░реЗрдХ рдФрд░ рдЕрдиреНрдп рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИред Make and build.xml for Ant and Phing рдХреЗ рд▓рд┐рдП рдПрдХ Makefile рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдмрд╕ Ruby рдХреЛрдб рд▓рд┐рдЦреЗрдВред рдпрджрд┐ рдЖрдк рдПрдХ рдЯреВрд▓ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирдП рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╕реАрдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЪрд▓реЛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред



рд░реЗрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


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



gem install rake









рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╛ рддреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рдЬрд╛рдПрдВ рдпрд╛ sudo рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



sudo gem install rake









рд░реЗрдХ рд░рддреНрди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред



рдкрд╣рд▓рд╛ рд░реЗрдХ рдЙрджрд╛рд╣рд░рдг


рд░реЗрдХ рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдмреА рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реИ:



task :default do

puts "Hello World!"

end









рд░реЗрдХ рдХрд╛рд░реНрдп рд╣рдореЗрд╢рд╛ Rakefile, Rakefile, rakefile.rb, рдпрд╛ Rakefile.rb рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓реЗ рджреЛ рд░реВрдкреЛрдВ рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Rakefile рд╕рд╣реЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:



$ rake

(in /home/lukasz/ruby/rake_examples)

Hello World!









рдкрд╣рд▓рд╛ рд░реЗрдХ рдХрд╛рд░реНрдп рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



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



рдЖрдЗрдП рдПрдХ рд░реЗрдХрдлрд╛рдЗрд▓ рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:



task :ring do

puts "Bell is ringing."

end



task :enter do

puts "Entering home!"

end









рдпрджрд┐ рд╣рдо рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реЗрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:



$ rake

(in /home/lukasz/ruby/rake_examples)

rake aborted!

Don't know how to build task 'default'



(See full trace by running task with --trace)









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



$ rake enter

(in /home/lukasz/rake_examples)

Entering home!

$ rake ring

(in /home/lukasz/rake_examples)

Bell is ringing.









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



рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ


рдЖрдЗрдП рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:



task :ring do

puts "Bell is ringing."

end



task :enter => :ring do

puts "Entering home!"

end









рдЕрдм, рдЬрдм рдЖрдк рдШрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдШрдВрдЯреА рдмрдЬ рдЬрд╛рдПрдЧреА:



$ rake enter

(in /home/lukasz/ruby/rake_examples)

Bell is ringing.

Entering home!









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



рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рди рдХреЗрд╡рд▓ рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдмрд▓реНрдХрд┐ рдмрд╛рдж рдореЗрдВ рднреА, рд╕рдордп рдХреА рд╢рд░реНрддреЛрдВ рдХреА рдкреВрд░реНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╣рдо рд░реВрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд╛рд░реНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдПрдХ рд╕реНрдерд┐рд░ XML рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ, рдпрд╛рдж рд╣реИ?



рджрд░рд╡рд╛рдЬреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:



task :ring do

puts "Bell is ringing."

end



task :enter do

puts "Entering home!"

end



task :enter => :ring









рдФрд░ рдкреНрд░рднрд╛рд╡ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред



рдХрд╛рд░реНрдп рдХрд╛ рд╡рд┐рд╡рд░рдгред


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



desc 'Ring the bell'

task :ring do

puts "Bell is ringing."

end



desc 'Enter home'

task :enter => :ring do

puts "Entering home!"

end









рдЙрдкрд▓рдмреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, -T рдпрд╛ - рдХрд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд░реЗрдХ рдЪрд▓рд╛рдПрдВ:



$ rake -T

(in /home/lukasz/ruby/rake_examples)

rake enter # Enter home

rake ring # Ring the bell









рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдХрд▓рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдЯреВрд▓ рдмрдирд╛рдП рдЧрдП рдереЗред рдХрдИ рд╣реИрдВ

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



file 'products.sql' => 'products.xml' do

# build SQL INSERT clause and save it in products.sql file,

# basing on products.xml datafile

end









рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛рд░реНрдп - рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ - рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ products.xml) рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдлрд╝рд╛рдЗрд▓ (products.sql) рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреБрд░рд╛рдиреА рдирд╣реАрдВ рд╣реИ рддреЛ рднреА рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдкрдХреЛ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдХрд╛рд░реНрдп рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



FileUtils




рд░реЗрдХ рдореЗрдВ рдлрд╛рдЗрд▓реБрдЯрд┐рд▓ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдХрдИ рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ mkdir, rmdir, cp, chmod рдФрд░ рдЯрдЪ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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



task :manipulate_files do

mkdir 'new_dir'

mv 'new_dir', 'lukasz'

chmod 0777, 'lukasz'

touch 'lukasz/wrobel.txt'

rm_rf 'lukasz'

end









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

рд╡реИрд╕реЗ, рдХрд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ? рдпрджрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреБрд░рд╛рдиреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рдпрджрд┐ рдЖрдк рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдЯреВрдбреЗрдЯ рдирд╛рдордХ рдлрд╛рдЗрд▓реБрдЯрд┐рд▓реНрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



task :check do

# ...



unless uptodate?(output_file, input_file)

# regenerate output_file

end

end









FileList


рдПрдХ рдХрд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рд╣реИ:



one_file_to_rule_them_all = 'database.sql'

tables_sql = ['orders.sql', 'payments.sql', 'categories.sql']



file one_file_to_rule_them_all => tables_sql









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



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



рдПрдХ FileList рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЪрд▓рд┐рдП рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:



one_file_to_rule_them_all = 'database.sql'



FileList['*.sql'].each {|table| file one_file_to_rule_them_all => table}









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



рдЕрдореВрд░реНрдд


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

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



PS рдореВрд▓ рд▓реЗрдЦ рдпрд╣рд╛рдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



All Articles