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

рдХрд╛рд░реНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ "рдЯрд╛рд╕реНрдХ рдХреНрд▓реЛрдЬреНрдб" рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рд╕реВрдЪрдирд╛рдПрдБ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рдереАрдВред рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реЗ рдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдХрд╛рд░реНрдп рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ "рдирдпрд╛" рдХрд╛ рджрд░реНрдЬрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдореИрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдВред
рдЖрдк рдРрд╕реЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд▓ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд▓рдЧ-рдЗрди рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдЗрди рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ (рдХрд▓рд╛рдХрд╛рд░, рд▓реЗрдЦрдХ, рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ)ред
рдЗрд╕рд▓рд┐рдП, рдХрд╛рд░реНрдп: рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рдХрд╛рд░реНрдп рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдореБрдЭреЗ рд╕реВрдЪрд┐рдд рди рдХрд░реЗрдВ"ред
рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди
рдореИрдВ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛; рдЗрд╕реЗ
redmine.org рдкрд░
рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рдЪреЗрдХрдорд╛рд░реНрдХ рдЬреЛрдбрд╝реЗрдВ, "рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рди рдХрд░реЗрдВред" рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ
\ app \ views \ users \ _mail_notifications.html.erb рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ
рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ HTML рдХреЛрдб рдЬреЛрдбрд╝реЗрдВред
рдпрд╣ рдмрд╣реБрдд рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдХ рд╣реБрдХ
: view_users_form , рдЧрд▓рдд рд╕реНрдерд╛рди рдкрд░ рдЪреЗрдХрдмреЙрдХреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде Redmine рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ
рд╣реБрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╣рдореЗрд╢рд╛ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗ рдФрд░ рдпрд╣ рдорд╛рдорд▓рд╛ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд▓рд╛, "рдкреИрдЪ" 3 рд╡рд┐рдзрд┐рдпрд╛рдБ, рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЦрд╛рддрд╛ рдкреГрд╖реНрда рдкрд░ рд╕рдВрдкрд╛рджрди рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╣реБрдХ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╣реБрдХ" рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛:
alias_method рдФрд░
alias_method_chain ред рдЙрдирдХреЗ рдХрд╛рдо рдХрд╛ рддрд░реНрдХ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдирд╛рдо, рд▓рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд▓рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдирд┐рдпрдВрддреНрд░рдХ рдЦрд╛рддрд╛
my_controller рдирд┐рдпрдВрддреНрд░рдХ,
рдЦрд╛рддрд╛ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдо рдкреНрд▓рдЧрдЗрди
\ sub \ рдкреИрдЪ \ my_controller_patch.rb рдХреЗ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдХрд░ рдЗрд╕реЗ рдкреИрдЪ рдХрд░реЗрдВрдЧреЗ
module Patches module MyControllerPatch def self.included(base)
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдирд╛ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛, рдЗрд╕реА рддрд░рд╣ред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╕рдордп рд╕реЗрдЯ рдорд╛рди рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
рд╕рдорд╕реНрдпрд╛ рдореЙрдбрд▓,
рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рд╡рд┐рдзрд┐ рдФрд░
watcher_recipients рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ
\ lib \ patches \ issue_patch.rb рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдмрджрд▓реЗрдВред
module Patches module IssuePatch def self.included(base) тАж base.class_eval do unloadable
рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкреИрдЪ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИред рдкреНрд▓рдЧ рдЗрди рдХреА рдЬрдбрд╝ рдореЗрдВ,
init.rb рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ:
/ рд╡рд┐рдХреНрд░реЗрддрд╛ / рдкреНрд▓рдЧрдЗрдиреНрд╕ / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВред рдпрд╣реА рд╣реИ, рдЕрдм рдЖрдк рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк Redmine рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд╛рдо рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреЗ рд╣реИрдВред
рд╕реНрд░реЛрдд рд╕реЗ рд▓рд┐рдВрдХ
https://github.com/parshukovvv/redmine_notice