Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build a small command-line Ruby program (a todo manager, a text adventure, a quiz game). Requirements: at least TWO classes, each with an 'initialize' and state exposed via attr_accessor/attr_reader (not raw @ivars); use BLOCKS with Enumerable methods (each/map/select) instead of manual index loops; use SYMBOLS for fixed keys/states (e.g. :done, :pending); handle bad input with begin/rescue — rescuing StandardError or a SPECIFIC error class, NEVER a bare 'rescue Exception'; and follow conventions (snake_case, 2-space indent, predicate methods ending in '?'). Run RuboCop and fix what it flags. Explain one spot where a block made the code clearer than a loop.
Two+ classes with initialize + attr_accessor/reader; blocks & Enumerable over manual loops; symbols for fixed keys; snake_case and ? predicates.
begin/rescue around risky input; rescues StandardError or a specific class — never a bare 'rescue Exception'.
Accomplishes the task end-to-end; passes RuboCop (or documents each disabled cop and why).
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# An object-oriented CLI in idiomatic Ruby ## Goal Build a small command-line Ruby program (a todo manager, a text adventure, a quiz game). Requirements: at least TWO classes, each with an 'initialize' and state exposed via attr_accessor/attr_reader (not raw @ivars); use BLOCKS with Enumerable methods (each/map/select) instead of manual index loops; use SYMBOLS for fixed keys/states (e.g. :done, :pending); handle bad input with begin/rescue — rescuing StandardError or a SPECIFIC error class, NEVER a bare 'rescue Exception'; and follow conventions (snake_case, 2-space indent, predicate methods ending in '?'). Run RuboCop and fix what it flags. Explain one spot where a block made the code clearer than a loop. ## Acceptance criteria - [ ] Idiomatic OOP: Two+ classes with initialize + attr_accessor/reader; blocks & Enumerable over manual loops; symbols for fixed keys; snake_case and ? predicates. - [ ] Safe error handling: begin/rescue around risky input; rescues StandardError or a specific class — never a bare 'rescue Exception'. - [ ] Works & RuboCop-clean: Accomplishes the task end-to-end; passes RuboCop (or documents each disabled cop and why). ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.