easyop 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e1949724cfdf1045f5b0ab6f013187b395f3baaf96b357a6367c894b251ce1e2
4
+ data.tar.gz: d22d453c480ce21caf923195c36f984135e488454bdb939131cc0e896088017d
5
+ SHA512:
6
+ metadata.gz: b956452863277b0218420ee73ca45eb9e28b449441ac2bc4458dcb5880cb95630ff5a5395ced570c50df1e2f98523b782dc5f39befc574834d13d739daf917be
7
+ data.tar.gz: 700f88243a8ba2a3add1c394c97ffc2d3e09e5a10ca157a1c4fcd5256fefc327bc04480ee5ddda8c329d3ff787acfb0321b33b219ca9ba78cc858b8c7ab4ea67
data/CHANGELOG.md ADDED
@@ -0,0 +1,41 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.0] — 2026-04-01
11
+
12
+ ### Added
13
+
14
+ #### Core
15
+ - `Easyop::Operation` — core mixin; include in any Ruby class to get `call`, `call!`, `ctx`, hooks, rescue, and schema DSL
16
+ - `Easyop::Ctx` — shared context object that doubles as the result; supports `success?`, `failure?`, `fail!`, `called!`, `rollback!`, chainable `on_success`/`on_failure` callbacks, and Ruby 3+ pattern matching via `deconstruct_keys`
17
+ - `Easyop::Ctx::Failure` — exception raised by `call!` and propagated through flows; carries the failed `ctx`
18
+ - `Easyop::Hooks` — `before`, `after`, and `around` hook DSL; inheritable, no ActiveSupport dependency
19
+ - `Easyop::Rescuable` — `rescue_from ExceptionClass` DSL with block and `with: :method` shorthand; supports inheritance
20
+ - `Easyop::Schema` — optional typed `params` / `result` declarations (`required`, `optional`); aliased as `inputs`/`outputs`; type shorthands (`:integer`, `:string`, `:boolean`, `:float`, `:symbol`, `:array`, `:hash`) and custom class matching
21
+ - `Easyop::Skip` — `skip_if` DSL for conditional step execution inside flows
22
+ - `Easyop::Flow` — sequential operation chain with shared `ctx`; automatic rollback in reverse order on failure; supports lambda guards as inline steps and nested flows
23
+ - `Easyop::FlowBuilder` — fluent builder returned by `FlowClass.prepare`; supports `bind_with`, `on(success:, fail:)`, and direct `.call`
24
+
25
+ #### Plugins
26
+ - `Easyop::Plugins::Base` — abstract base class for custom plugins; defines the `self.install(operation_class, **options)` contract
27
+ - `plugin` DSL on `Operation::ClassMethods` — installs a plugin via `plugin PluginClass, **options`; inheritable by subclasses
28
+ - `Easyop::Plugins::Instrumentation` — emits `"easyop.operation.call"` events via `ActiveSupport::Notifications`; opt-in log subscriber via `attach_log_subscriber`
29
+ - `Easyop::Plugins::Recording` — persists every execution to an `OperationLog` ActiveRecord model; configurable `recording_model`; per-class opt-out with `recording false`; scrubs sensitive keys from persisted attrs
30
+ - `Easyop::Plugins::Async` — adds `.call_async` to any operation; serialises ActiveRecord objects as `{__ar_class:, __ar_id:}` and deserialises in the background job; lazy `Job` class creation avoids requiring ActiveJob at load time
31
+ - `Easyop::Plugins::Transactional` — wraps the full `before → call → after` lifecycle in an ActiveRecord (or Sequel) transaction; per-class opt-out with `transactional false`; inheritance-aware
32
+
33
+ #### Tooling
34
+ - `Easyop.configure` block — global configuration (`strict_types`, `recording_model`, `instrumentation_event_name`)
35
+ - `llms/overview.md` and `llms/usage.md` — LLM context files for AI-assisted development
36
+ - `claude-plugin/` — Claude Code skill with references and usage examples
37
+ - `examples/easyop_test_app/` — full Rails 8 blog application demonstrating all features in real-world code
38
+ - `examples/usage.rb` — 13 runnable plain-Ruby examples
39
+
40
+ [Unreleased]: https://github.com/pniemczyk/easyop/compare/v0.1.0...HEAD
41
+ [0.1.0]: https://github.com/pniemczyk/easyop/releases/tag/v0.1.0