Fabric: v2-рд╕рдВрдЧрдд 'рднреВрдорд┐рдХрд╛рдПрдВ' рдпрд╛ рд╕рдорд╛рди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: fabric/fabric

рд╕рд╛рд░

рд▓реЗрдЦрди рдХреЗ рд╕рдордп, v2 рд╢рд╛рдЦрд╛ рдореЗрдВ Group рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реНрд╡ рдореЗрдВ 'рднреВрдорд┐рдХрд╛рдУрдВ' рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдиреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрд░реНрдл тАЛтАЛтАЛтАЛ"рдореЗрдЬрдмрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЬреЛ рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде/рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ"ред

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

рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд░рдЦреЛ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд░реЛрд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдЧрд░ рд╕реАрдПрд▓рдЖрдИ рдпрд╛ рдЯрд╛рд╕реНрдХ-рдХреЙрд▓рд┐рдВрдЧ рдмрд┐рдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЧреНрд░реБрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдмреЗрдХрд╛рд░ рд╣реИ!

рдкреГрд╖реНрдарднреВрдорд┐

v1 рдореЗрдВ, рднреВрдорд┐рдХрд╛рдПрдВ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рдлреНрд▓реИрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдереАрдВ рдЬреЛ рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрдмрд▓ рдХреЛ рдореИрдк рдХрд░рддреА рдереАрдВ рдЬреЛ рдХрд┐ v2 рдореЗрдВ рд╕рдореВрд╣ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕реАрдПрд▓рдЖрдИ рдкрд░ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( fab --roles=web,db ) рдФрд░/рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд ( @task('db') \n def migrate(): ), рдмрд╣реБрдд рдХреБрдЫ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рддрд░рд╣ред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЙрдиреНрд╣реЗрдВ env.roledefs рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирд┐рд░реНрджреЗрд╢; рдЙрдиреНрдирдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдордзреНрдпрд╡рд░реНрддреА рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдШреВрдорддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ (рдкреВрд░реНрд╡-рдХрд╛рд░реНрдп рдпрд╛ рд╕рдмрд░реВрдЯреАрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рдХрднреА-рдХрднреА рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╕рдордп рдкрд░ред

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ / рдЬрд╝рд░реВрд░рддреЗрдВ / рдЙрдк-рд╕реБрд╡рд┐рдзрд╛рдПрдБ

  • рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдЙрдкрдпреЛрдЧ/рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА, рдЕрдиреБрднрд╡рд╣реАрди рдореИрдкрд┐рдВрдЧ: рдПрдХ рдирд╛рдо рдбрд╛рд▓реЗрдВ, Group s рдФрд░/рдпрд╛ Connection s рдХреЗ рдХреБрдЫ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

    • рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдЕрдХреНрд╕рд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Lexicon рдмрдЬрд╛рдп dict ред

    • рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЧрд╣рд░реА рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдЬреИрд╕реЗ 'рдмрдВрдбрд▓рд┐рдВрдЧ', рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ db , web , lb рдирд╛рдордХ рдкреНрд░рддреНрдпрдХреНрд╖ рдореИрдкрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ prod рдирд╛рдордХ рдПрдХ рджреНрд╡рд┐рддреАрдп-рд╕реНрддрд░реАрдп рдирд╛рдо рд╣реИ Lexicon рдЬреЛрдбрд╝рд╛ рд╣реИред рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдБ рдЕрдиреНрдп рдорд╛рдирдЪрд┐рддреНрд░ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░рддреЗ рд╣реЛрдВред

    • рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд/рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЧреНрд▓реЛрдмрд┐рдВрдЧ рдпрд╛ рдЕрдиреНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдкрд╛рдпрдерди "рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯрд╛рдЗрдк" рдирд╣реАрдВ рд╣реИ ...

  • рдЙрдкрдпреЛрдЧреА 'рд░рд┐рд╡рд░реНрд╕ рдореИрдкрд┐рдВрдЧ' рддрд╛рдХрд┐ рдЖрдк рдпрд╣ рдкрд╣рдЪрд╛рди рд╕рдХреЗрдВ рдХрд┐ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХрдиреЗрдХреНрд╢рди рдХрд┐рди рд╕рдореВрд╣реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

    • рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд: рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд╛рдЭрд╛ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рднреЛрд▓реА рдЙрддреНрддрд░ - рдкрд╣рдЪрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - рдиреАрдЪреЗ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдХрдИ рд╕рдорд╛рди рдХрдиреЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

    • рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреА рдмрд╛рдзрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рдорд╛рдирддрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП if cxn in group рдХрд╛рдо рдХрд░реЗрдЧрд╛ рднрд▓реЗ рд╣реА cxn рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рд╣реИ рдЕрдВрджрд░ рдмрд░рд╛рдмрд░ рд╕рджрд╕реНрдп рд╕реЗ group ред

    • рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдХрд┐рд╕реА рд╕рдореВрд╣ рд╕реЗ рдордЬрдмреВрдд, рд╕реНрдЯреЗрдЯрдлреБрд▓ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ (рд╕рдореВрд╣, рдмрд╣реБрд╡рдЪрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рддреЛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрд╕ рдСрдлрд╣реИрдВрдб рдХреЗ рдорд╣рд╛рди рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реЗ рд╣реИрдВред

  • рдкрд┐рдЫрд▓реЗ рд╕реЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд: "рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣реА рднреВрдорд┐рдХрд╛" рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг/рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдХреБрдЫ рд▓реЛрдЧ v1 рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЪрд╛рд╣рддреЗ рдереЗ рдЬреЛ рдЗрд╕рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдХрд╛рд░рдг рдЧреИрд░-рддреБрдЪреНрдЫ рдерд╛)

    • рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╢реНрди рд╣реИрдВ: "рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреМрди рд╕реА рднреВрдорд┐рдХрд╛ (рднреВрдорд┐рдХрд╛рдУрдВ) рдХрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдЬрдмрд╛рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЖрдо рддреМрд░ рдкрд░ рдмреЛрд▓ рд░рд╣рд╛ рд╣реИ" (рдореВрд▓ рд░реВрдк рд╕реЗ, рд░рд┐рд╡рд░реНрд╕ рд▓реБрдХрдЕрдк рдХрд╛ рдкрд┐рдЫрд▓рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛) рд▓реЗрдХрд┐рди рдпрд╣ рднреА "рдХреНрдпрд╛ рднреВрдорд┐рдХрд╛ рдереА рдирд┐рд╖реНрдкрд╛рджрди рдорд╢реАрдирд░реА рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛"ред

    • рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдП, рдмреА рдФрд░ рд╕реА рднреВрдорд┐рдХрд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрд╕реНрдЯ 'рдлреВ' рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рднреАрддрд░ рдЬрд┐рд╕рдХрд╛ рд╕рдВрджрд░реНрдн 'рдлреВ' рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕реЗ 'рднреВрдорд┐рдХрд╛ рдП рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд' рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдХрд╛рд░рдг рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ "рдП, рдмреА рдФрд░ рд╕реА" рдХрд╛ рдЙрддреНрддрд░ (рднреВрдорд┐рдХрд╛рдПрдВ 'рдлреВ' рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рд╣реИ) рдпрд╛ рд╕рд┐рд░реНрдл "рдП" (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рднреВрдорд┐рдХрд╛)?

    • рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдкреАрдЖрдИ рдХреЙрд▓реЛрдВ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рд╣реИред

  • рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рдФрд░/рдпрд╛ рдкреНрд░рддрд┐-рдХрд╛рд░реНрдп рд╕реАрдПрд▓рдЖрдИ рдкрд░ рд▓рдХреНрд╖реНрдп рдЪрдпрди

    • рдЗрдирд╡реЛрдХ рдХреЗ рд╕реАрдПрд▓рдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ "рдЭрдВрдбреЗ рдЬреЛ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдорд┐рд▓рддрд╛ рд╣реИ" рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ pyinvoke/invoke#205 рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдордЬрдмреВрддреА рд╕реЗ рдЧрд┐рд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛ (рдЬреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдереАред)

  • рдареАрдХ рдЗрд╕реА рддрд░рд╣ рдХрд╛рд░реНрдп-рд╕реНрддрд░ рдЪреВрдХ

    • рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рд░реНрдп-рд╕реНрддрд░реАрдп рд▓рдХреНрд╖реНрдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдХрдиреЗрдХреНрд╢рди, рдХрдиреЗрдХреНрд╢рди, рд╕рдореВрд╣ obj, рд╕рдореВрд╣ objs, рдпрд╛ _to_ рд╕рдореВрд╣ objs рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╛рдо (рдпрд╣реА рдЖрдЦрд┐рд░реА рдЪреАрдЬ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЗрд╕ рдЯрд┐рдХрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рддрд░реНрдХрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ)

  • рдбрд┐рдЯреНрдЯреЛ рд╕рдВрдЧреНрд░рд╣-рд╕реНрддрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ (v2 рдореЗрдВ рдирдпрд╛!)

    • рдпрд╛рдиреА "$ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ db рднреВрдорд┐рдХрд╛ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ"

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

  • рдУрдУ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдо рдХреБрдЫ рдФрд░ рдирдпрд╛ рдФрд░ рд░реЛрдорд╛рдВрдЪрдХ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ? рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдмреНрд▓реЙрдХ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдкрд░ рдЬреЛрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╢реЗрдл рдпрд╛ рдПрдиреНрд╕рд┐рдмрд▓ рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдХрд░рдиреЗ рдкрд░ рдирд╣реАрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рдЪрд╛рд░/рдЪрд┐рдВрддрд╛рдПрдВ

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

    • рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рдХреЙрдиреНрдлрд┐рдЧ рдбрд┐рдХреНрдЯреНрд╕ рдореЗрдВ рд╕рдЪрдореБрдЪ рд╕рдм рдХреБрдЫ рднрд░рдирд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдмреБрд░реА рдЦрдмрд░ рдЖрдПрдЧреАред

  • рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдФрд░ рдмрдВрдбрд▓рд┐рдВрдЧ рдЬреИрд╕реЗ рдЧрд╣рд░реЗ рдирд┐рд░реНрдорд╛рдг рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЖрджреЗрд╢ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд рдПрдХ рддреБрдЪреНрдЫ рдЙрдкрдирд╛рдо рд╕реЗрдЯрдЕрдк рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ key1 рдХрд╛ рдорд╛рди рдПрдХ рд╕рдореВрд╣ рд╣реИ рд▓реЗрдХрд┐рди key2 рдХрд╛ рдорд╛рди key1 рд╣реИ; рдЕрдм рдЖрдкрдХреЛ key2 рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдпрд╛ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЛ рдмрд╛рд░ рдХреНрд░реЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)

    • рдпрджреНрдпрдкрд┐ рдпрджрд┐ рд╣рдо рдЕрдзрд┐рдХрддрд░ "рдЗрд╕реЗ рдЗрди-рдкрд╛рдпрдерди рдХрд░реЗрдВ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдПрдкреАрдЖрдИ рдХреА рддрд░рд╣ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд╛рдж рд╡рд┐рдзрд┐ рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдФрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рднрдпрд╛рдирдХ рд╣реИ? рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдареАрдХ рдЗрд╕реА рддрд░рд╣ рд▓реЗрдХреНрд╕рд┐рдХрди рд╡реИрд╕реЗ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

  • рдкреНрд░рд╛рд░реВрдк рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдордХреНрдЦреА рдкрд░ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ; рдпрд╣ рдкреНрд▓рд╕ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХрд╣реАрдВ рднреА "рд╕рдВрдЧреНрд░рд╣рд┐рдд" рдПрдХ рдмреЗрд╡рдХреВрдл рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

    • рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо рднреВрдорд┐рдХрд╛рдУрдВ/рд╕рдореВрд╣реЛрдВ рдХреЗ рдЪрдпрди рд╕реЗ 'рдиреАрдЪреЗ рдХреА рдУрд░' рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рдХреЗ рдПрдкреАрдЖрдИ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд▓рдХреНрд╖реНрдп рдХреА рдПрдХ рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЗрдХрд╛рдИ рдореЗрдВ рдХреНрдпрд╛ рдЖрдкреВрд░реНрддрд┐ рдХреА рд╣реИ" рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╕рдмрд╕реЗ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдкреВрд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рд╣реИред рддрдм рд╣рдо рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЖрдкреВрд░реНрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрд┐рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рддрд░реАрдХрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

    • @RedKrieg рдХреЗ рдкрд╛рд╕ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдлреНрдЯреА рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ @group рдЬреИрд╕реЗ @task , рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рд░реНрдп рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЗрдХрд╛рдЗрдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рдореВрд╣ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред

    • рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдкрджрд╛рдиреБрдХреНрд░рдо (рд╕рдВрдЧреНрд░рд╣) рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ (рдХреНрдпреЛрдВ рдкрд╣рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ) рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг (рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рднреВрдорд┐рдХрд╛/рд╕рдореВрд╣ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдЕрдХреНрд╕рд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╛рд░реАрдХреА рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд░рддреА рд╣реИрдВ!)



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



    • рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рд╣рдо рдХрдИ рд╕рдореВрд╣реЛрдВ (рдпрд╛ рдХрдиреЗрдХреНрд╢рди) рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдпрджрд┐ рдЗрд╕реЗ рд╕рдЬрд╛рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ (рдЬреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣-рд╕реНрддрд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред

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

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝реИрдмреНрд░рд┐рдХ@ 1. рдЪреВрдХ рдЧрдпрд╛ , рдЦрд╛рд╕рдХрд░ рдЬрдм $ fab -R dev рдЪрд▓ рд░рд╣рд╛ рд╣реЛ

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╕реЗ:

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

рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ:

  1. рдкрд░реНрдпрд╛рд╡рд░рдг рдореБрдХреНрдд рдХреЛрдбрдмреЗрд╕ https://12factor.net/configред рдкрд░рд┐рд╡реЗрд╢ (рднреВрдорд┐рдХрд╛рдПрдВ) рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдЬрдмрд╛рди рддрд╛рд░ рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ fabfile.py рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рд╣реЛрдиреЗ рдкрд░ рдпрд╣ env.roledefs рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ):
EnvironmentDatabaseAPIClient(
    'https://rest.api.url/schema/',
    env.service_name,
).apply_env()
  1. рд╕рд░реНрд╡рд░ рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ - рдПрдХрд╛рдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рд╡реЗрд╢ (рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдирд┐рдЬреА рд╣реИрдВ, рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИрдВ) рдФрд░ рдПрдХрд╛рдзрд┐рдХ рдЙрддреНрдкрд╛рджрди рдкрд░рд┐рд╡реЗрд╢ (рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП)ред рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдореЗрдЬрдмрд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрдкрдбрд╝реЗ рдХреА рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  2. рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ ( env.service_name рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ) рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИрдВред

  3. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЗрдЯрд╛-рд░реЛрд▓реНрд╕ (рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рдореВрд╣) рд╣реИрдВред рдЙрдирдХреЗ рдкрд╣рд▓реЗ group- : group-production , group-test , group-external , group-internal , group-all ред рдпрд╣ рд╣рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рд╕рд░реНрд╡рд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП group-all рдЙрддреНрдкрд╛рджрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рджреЛрдиреЛрдВ рдореЗрдВ рд╕рднреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред

  4. рднреВрдорд┐рдХрд╛ рд╕рдореВрд╣реЛрдВ, рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдореБрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд╢реЗрд╖ рдХрдкрдбрд╝реЗ рдХрд╛рд░реНрдп рд╣реИрдВред

  5. рд╣рдо рд░рд┐рд╡рд░реНрд╕ рдореИрдкрд┐рдВрдЧ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкрд░ рд░реЛрд▓ рдирд╛рдореЛрдВ рдкрд░ рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ (рд╣реЛрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкреНрд░рддрд┐ service_name рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ)ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рднреВрдорд┐рдХрд╛ рдореЗрдВ рд╕рднреА рд╣реЛрд╕реНрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕реНрд▓реИрдХ рд╕реВрдЪрдирд╛ рднреЗрдЬрддреЗ рд╣реИрдВред EnvironmentDatabaseAPI рд╕рд░реНрд╡рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдпрд╣ рд▓реЙрдЧ рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдерд┐рддрд┐ рд░рдЦрддрд╛ рд╣реИ)ред рдпрд╣ рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХрдкрдбрд╝реЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдЬрд╛рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ env.host , env.port рдФрд░ env.service_name (рд╕рд╛рде рд╣реА рдкреНрд░рддрд┐рдмрджреНрдз рдЬрд╛рдирдХрд╛рд░реА) рдХреЛ рд╡рд╛рдкрд╕ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдмрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИред

  6. рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдзрд┐рдХ env рдЪрд░ рдЦреАрдВрдЪрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдп рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

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

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

рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ fab -R ... рдЪрд▓рд╛рдпрд╛ред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд╛рдИрдПрдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╕реВрдЪреА рдареАрдХ рд╣реЛрдЧреАред)

рдореИрдВ рдлреИрдмреНрд░рд┐рдХ v2 рдореЗрдВ рдПрдХ рд╕рдордХрдХреНрд╖ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛, рдФрд░ рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдореЗрдВ рднреА рд╡рд┐рдлрд▓ рд░рд╣рд╛:

  • рдПрдХ fabric.yaml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдпреБрдХреНрдд
active_hostset: null
hostsets:
  myhostset:
  - ...
  • active_hostset = config["hostsets"][config["active_hostset"]] рдореЗрдВ fabfile.py
  • env INVOKE_ACTIVE_HOSTSET=myhostset fab ...

рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реВрдЪреА рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ KeyError: 'active_hostset' ред

рд╣рдо рдлреИрдмреНрд░рд┐рдХ v1 рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХреЛ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП role.environment:staging рдХрд╛рд░реНрдп рдЪрд▓рд╛рдХрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдпрд╣ рдХрд╛рд░реНрдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

V2 рдореЗрдВ рд╣рдордиреЗ рдПрдХ рдХрд╕реНрдЯрдо рдЯрд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ Executor.expand_calls рд╣рдорд╛рд░реЗ role.environment рдХрд╛рд░реНрдп рдХреЗ рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рд░реНрдп рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдореЗрдЬрдмрд╛рди рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред

Executor.expand_calls рдПрдХ рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдирд╛ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдмрд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддреЛ рдКрдкрд░ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╕реНрдЯрдо Task рдЬрд┐рд╕реЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдареАрдХ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП fab role.environment dev deploy.app - role.environment рдХрд╛рд░реНрдп рдЕрдм deploy.app рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП deploy.app рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рд╣реА рд╕реЗрдЯред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдВрдЯреЗ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд┐рдпрд╛:
https://github.com/pyinvoke/invoke/compare/master...rectalogic :expand-generator
https://github.com/fabric/fabric/compare/master...rectalogic :expand-generator

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝реИрдмреНрд░рд┐рдХ@ 1. рдЪреВрдХ рдЧрдпрд╛ , рдЦрд╛рд╕рдХрд░ рдЬрдм $ fab -R dev рдЪрд▓ рд░рд╣рд╛ рд╣реЛ

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

neemxyang picture neemxyang  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zhaoguixu picture zhaoguixu  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

acdha picture acdha  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

shadyabhi picture shadyabhi  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

SamuelMarks picture SamuelMarks  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ