Ruby Style and Project Organization
Constants and Defaults
Project defaults are easier to review when they are named once and applied consistently.
defaults
Use named defaults for values that represent a project decision, then let local configuration override them.
Constants and Defaults
constants_defaults.rb
Replay: real traced execution (multi-file project)
DEFAULT_RETRIES = 3
DEFAULT_MODE = "safe"
requested_retries = 2
requested_mode = "fast"
retries = requested_retries > 0 ? requested_retries : DEFAULT_RETRIES
mode = requested_mode.empty? ? DEFAULT_MODE : requested_mode
policy = "#{mode}:#{retries}"
puts "default_retries=#{DEFAULT_RETRIES}"
puts "requested_retries=#{requested_retries}"
puts "mode=#{mode}"
puts "policy=#{policy}"
DEFAULT_RETRIES = 3
DEFAULT_MODE = "safe"
requested_retries = 0
requested_mode = "fast"
retries = requested_retries > 0 ? requested_retries : DEFAULT_RETRIES
mode = requested_mode.empty? ? DEFAULT_MODE : requested_mode
policy = "#{mode}:#{retries}"
puts "default_retries=#{DEFAULT_RETRIES}"
puts "requested_retries=#{requested_retries}"
puts "mode=#{mode}"
puts "policy=#{policy}"
DEFAULT_RETRIES = 3
DEFAULT_MODE = "safe"
requested_retries = 5
requested_mode = "fast"
retries = requested_retries > 0 ? requested_retries : DEFAULT_RETRIES
mode = requested_mode.empty? ? DEFAULT_MODE : requested_mode
policy = "#{mode}:#{retries}"
puts "default_retries=#{DEFAULT_RETRIES}"
puts "requested_retries=#{requested_retries}"
puts "mode=#{mode}"
puts "policy=#{policy}"
DEFAULT_RETRIES = 3
DEFAULT_MODE = "safe"
requested_retries = 2
requested_mode = "safe"
retries = requested_retries > 0 ? requested_retries : DEFAULT_RETRIES
mode = requested_mode.empty? ? DEFAULT_MODE : requested_mode
policy = "#{mode}:#{retries}"
puts "default_retries=#{DEFAULT_RETRIES}"
puts "requested_retries=#{requested_retries}"
puts "mode=#{mode}"
puts "policy=#{policy}"
DEFAULT_RETRIES = 3
DEFAULT_MODE = "safe"
requested_retries = 2
requested_mode = "audit"
retries = requested_retries > 0 ? requested_retries : DEFAULT_RETRIES
mode = requested_mode.empty? ? DEFAULT_MODE : requested_mode
policy = "#{mode}:#{retries}"
puts "default_retries=#{DEFAULT_RETRIES}"
puts "requested_retries=#{requested_retries}"
puts "mode=#{mode}"
puts "policy=#{policy}"
DEFAULT_RETRIES ← 3, DEFAULT_MODE ← safe, requested_retries ← 2
1DEFAULT_RETRIES→ 3 = 32DEFAULT_MODE→ safe = "safe"34requested_retries→ 2 = 2 #@requested_retries=0, 55requested_mode→ fast = "fast" #@requested_mode="safe", "audit"67retries→ 2 = requested_retries2 > 0 ? requested_retries : DEFAULT_RETRIES38mode→ fast = requested_mode.empty?false ? DEFAULT_MODEsafe : requested_modefast9policy→ fast:2 = "#{modefast}:#{retries2}"1011puts "default_retries=#{DEFAULT_RETRIES3}"12puts "requested_retries=#{requested_retries2}"13puts "mode=#{modefast}"14puts "policy=#{policyfast:2}"outputdefault_retries=3 requested_retries=2 mode=fast policy=fast:2
DEFAULT_RETRIES ← 3, DEFAULT_MODE ← safe, requested_retries ← 0
1DEFAULT_RETRIES→ 3 = 32DEFAULT_MODE→ safe = "safe"34requested_retries→ 0 = 05requested_mode→ fast = "fast"67retries→ 3 = requested_retries0 > 0 ? requested_retries : DEFAULT_RETRIES38mode→ fast = requested_mode.empty?false ? DEFAULT_MODEsafe : requested_modefast9policy→ fast:3 = "#{modefast}:#{retries3}"1011puts "default_retries=#{DEFAULT_RETRIES3}"12puts "requested_retries=#{requested_retries0}"13puts "mode=#{modefast}"14puts "policy=#{policyfast:3}"outputdefault_retries=3 requested_retries=0 mode=fast policy=fast:3
DEFAULT_RETRIES ← 3, DEFAULT_MODE ← safe, requested_retries ← 5
1DEFAULT_RETRIES→ 3 = 32DEFAULT_MODE→ safe = "safe"34requested_retries→ 5 = 55requested_mode→ fast = "fast"67retries→ 5 = requested_retries5 > 0 ? requested_retries : DEFAULT_RETRIES38mode→ fast = requested_mode.empty?false ? DEFAULT_MODEsafe : requested_modefast9policy→ fast:5 = "#{modefast}:#{retries5}"1011puts "default_retries=#{DEFAULT_RETRIES3}"12puts "requested_retries=#{requested_retries5}"13puts "mode=#{modefast}"14puts "policy=#{policyfast:5}"outputdefault_retries=3 requested_retries=5 mode=fast policy=fast:5
DEFAULT_RETRIES ← 3, DEFAULT_MODE ← safe, requested_retries ← 2
1DEFAULT_RETRIES→ 3 = 32DEFAULT_MODE→ safe = "safe"34requested_retries→ 2 = 25requested_mode→ safe = "safe"67retries→ 2 = requested_retries2 > 0 ? requested_retries : DEFAULT_RETRIES38mode→ safe = requested_mode.empty?false ? DEFAULT_MODEsafe : requested_modesafe9policy→ safe:2 = "#{modesafe}:#{retries2}"1011puts "default_retries=#{DEFAULT_RETRIES3}"12puts "requested_retries=#{requested_retries2}"13puts "mode=#{modesafe}"14puts "policy=#{policysafe:2}"outputdefault_retries=3 requested_retries=2 mode=safe policy=safe:2
DEFAULT_RETRIES ← 3, DEFAULT_MODE ← safe, requested_retries ← 2
1DEFAULT_RETRIES→ 3 = 32DEFAULT_MODE→ safe = "safe"34requested_retries→ 2 = 25requested_mode→ audit = "audit"67retries→ 2 = requested_retries2 > 0 ? requested_retries : DEFAULT_RETRIES38mode→ audit = requested_mode.empty?false ? DEFAULT_MODEsafe : requested_modeaudit9policy→ audit:2 = "#{modeaudit}:#{retries2}"1011puts "default_retries=#{DEFAULT_RETRIES3}"12puts "requested_retries=#{requested_retries2}"13puts "mode=#{modeaudit}"14puts "policy=#{policyaudit:2}"outputdefault_retries=3 requested_retries=2 mode=audit policy=audit:2