- Allow to specify
parent: trueforstepto skipStepMethodExistsRubocop cop
-
Rename gem from
light-services tooperandi` Reason: No folder nesting. The gem isn't really "light" anymore anyway. -
Removed dry-types support. Sorbet runtime types are now the recommended type system for advanced type validation. Plain Ruby class types continue to work as before.
-
The
runandrun!methods now accept only keyword arguments, passing a hash as the first argument is no longer supported.
- Sorbet runtime type support for
argandoutput(validation only, no coercion)
- Sorbet and Tapioca support for
argandoutput
- Add RuboCop cop
ReservedName
- Add Cursor rules
- Add
successful?as an alias forsuccess? - Add RuboCop cop
PreferFailMethodto detecterrors.add(:base, "message")and suggest usingfail!("message")instead
- Service runs steps with
always: trueafterfail_immediately!was called
- Add
fail!andfail_immediately!helpers
- Split
config.require_typeintoconfig.require_arg_typeandconfig.require_output_type
- Better IDE support for callbacks DSL
- Enforce arguments and output types by default. Use
config.require_arg_type = falseandconfig.require_output_type = falseto disable this behavior. The convenience setterconfig.require_type = falsesets both options at once for backward compatibility.
stop!andstopped?methods for early exit (renamed fromdone!anddone?)stop_immediately!method for immediate execution halt within the current stepdone!anddone?are deprecated, but remain available as aliases for backward compatibility- Ruby LSP support with step navigation and indexing
- Rubocop cops
StepMethodExists,ConditionMethodExists,DslOrder,MissingPrivateKeyword,NoDirectInstantiation,ArgumentTypeRequired,OutputTypeRequired,DeprecatedMethods - Comprehensive YARD documentation
- Removed support for symbol types (e.g.,
:array,:hash,:boolean). Use Ruby classes (e.g.,Array,Hash,[TrueClass, FalseClass]) or dry-types - Removed
benchmark: trueoption - Removed
verbose: trueoption - Bumped minimum supported Ruby version to 3.0.
- Removed
errors.copy_to
- Output type validation
- dry-types support for arguments and outputs (with coercion and constraints)
- Callback system (service + step callbacks)
- Built-in RSpec matchers for services
- Name validation for arguments, steps, and outputs
runmethod fallback when no steps are defined
- Documentation moved into this repository and refreshed to match v3 behavior