loop_dance - рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдпреЛрдЬрдирд╛рдХрд╛рд░

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдПрдХ рдРрд╕рд╛ рдбреЗрдореЙрди рдмрдирд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХреБрдЫ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИред



рдЖрдорддреМрд░ рдкрд░, рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдШрд░рдШрд░рд╛рд╣рдЯ, рдбреЗрдорди_рдХрдВрдЯреНрд░реЛрд▓рд░, рдбреЗрдорди_рдЬреЗрдирд░реЗрдЯрд░, рдЖрджрд┐ред рдФрд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдмрдЧреАрдЪреЗ рдХреА рдмрд╛рдбрд╝ рд▓рдЧрд╛рдиреЗ рдФрд░ рдПрдХ рд╣реА рдмрд╛рдд рд▓рд┐рдЦрдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ред рдореБрдЭреЗ рдмрд╕ рд╣рд░ рдШрдВрдЯреЗ рдХреБрдЫ User.notify_all рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛



рдкреНрд░рд╕реНрддреБрдд рд▓реВрдк_рдбрд╛рдВрд╕ - рдПрдХ рд░реЗрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдбреЗрдорди рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордгрд┐ред



рд╕реНрдерд┐рддрд┐



  1. рдиреНрдпреВрдирддрдо рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдбред рдХреЗрд╡рд▓ рдХреНрдпрд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд┐рд╕ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рдеред
  2. рдХреЛрдб рдХреЛ рдПрдХ рд░реЗрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдЬрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдбреЗрдореЙрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн / рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  4. рд░реЗрдХ-рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рд╕реАрдзреЗ рдЖрд╡реЗрджрди рд╕реЗ рдбреЗрдореЙрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдкрд░ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ)


рд╣рдо рдирд╛рдЪрддреЗ рд╣реИрдВ



рд╣рдо рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдиреЗ рдЬреЗрдордлрд╛рдЗрд▓ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдмрдВрдбрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВ



gem "loop_dance"
      
      







рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ lib / loop_dance.rb рдмрдирд╛рдПрдБред



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд╣рд░ 3 рдШрдВрдЯреЗ рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВред рд╣рд░ 60 рд╕реЗрдХрдВрдб рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред



  class Dancer1 < LoopDance::Dancer every 3.hours do User.notify_all end every 60.seconds do Report.checks end end
      
      







рд╡рд╣ рд╕рдм рд╣реИред



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



рдЖрдк рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 rake loop_dance:start_all rake loop_dance:stop_all rake loop_dance:status rake loop_dance:dancer1:start rake loop_dance:dancer1:stop rake loop_dance:dancer1:status
      
      







рдФрд░ рдЖрдк рдЖрд╡реЗрджрди рд╕реЗ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 Dancer1.start unless Dancer1.running?
      
      







рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкрддрд╛: github.com/dapi/loop_dance



рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ:

ruby-toolbox.com/categories/daemon_management.html

ruby-toolbox.com/categories/daemonizing.html

ruby-toolbox.com/categories/scheduling.html



All Articles