factory_trace рд░рддреНрди рдЖрдкрдХреЗ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ

рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП factory_bot рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП factory_trace рд░рддреНрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдЖрдкрдХреЗ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдФрд░ рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛ред

рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?


рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╢реБрднрд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди, рдордгрд┐ рдХреБрдЫ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЕрдВрдд рдореЗрдВ рдпрд╣ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

$ FB_TRACE=1 rspec total number of unique used factories & traits: 3 total number of unique unused factories & traits: 2 unused global trait with_email unused factory admin 

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХреАрдХрд░рдг


RSpec рдХреЗ рд▓рд┐рдП, рдпрд╣ рдордгрд┐ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 #      FactoryTrace.start #     FactoryTrace.stop 

рд╕рдорд╛рдирд╛рдВрддрд░ / рдЯреБрдХрдбрд╝рд╛ рдирд┐рд╖реНрдкрд╛рджрди


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

рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 #   FB_TRACE=trace_only FB_TRACE_FILE=fb_trace_result1.txt bundle exec rspec spec/first_spec.rb #   (    ) FB_TRACE=trace_only FB_TRACE_FILE=fb_trace_result2.txt bundle exec rspec spec/second_spec.rb #     bundle exec factory_trace fb_trace_result1.txt fb_trace_result2.txt 

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


ActiveSupports::Notifications рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ factory_bot рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ:

 ActiveSupport::Notifications.subscribe('factory_bot.run_factory') do |_name, _start, _finish, _id, payload| name = payload[:name] traits = payload[:traits] storage[name] ||= Set.new storage[name] |= traits end 

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

рдкреЛрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдо


рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ, рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛!

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles