nicolas-joubert/grabit-bundle
A Symfony bundle that integrates Grabit into PHP applications, providing service configuration and Composer-ready setup for adding Grabit-based functionality. Useful when you want a simple, bundle-managed way to wire Grabit services into Symfony projects.
SourceDisabledEvent and SourceErrorEvent, dispatched when a grab source is disabled or fails. This is the hook layer that lets a PM promise "we'll know within minutes when a feed breaks" without building bespoke monitoring — listen for the events, route to Slack/PagerDuty/Sentry, and you have operational coverage.SourceDisabledEvent distinguishes intentional disabling from failure (SourceErrorEvent). Use that split in product decisions: don't page on-call for a source an admin turned off, do page for repeated errors. This affects SLA wording and incident process, not just code.Consider adoption when:
Look elsewhere when:
nicolas-joubert/grabit-bundle) pre-2.0; the 1.4.1 → 1.5 jump is minor-versioned, so treat it as a dependency to review on upgrade rather than a platform to build a business on. Have an exit plan (events are your abstraction seam — you can swap implementations behind them).To executives (one paragraph): We evaluated grabit-bundle, a Laravel package that manages external content sources end to end. Its new v1.5 release adds failure and disable notifications, which closes the main operational gap we'd otherwise have to build ourselves. It reduces the effort to ship and operate our ingestion feature; the tradeoff is that it is maintained by a single developer, so we're adopting it as a well-wrapped dependency rather than a strategic platform, and gating rollout on a monitoring layer we own.
To engineering (the practical case): The package models sources with enable/disable state — plumbing we'd otherwise write and maintain. v1.5 exposes SourceDisabledEvent and SourceErrorEvent, giving us a stable integration point: register listeners for alerting, backoff, and metrics, and keep our business logic decoupled from the package internals. Because we bind to events rather than to its models, a future swap or fork remains cheap. Ask: what does the error payload contain (source id, exception, attempt count)? That determines whether we can drive retry/backoff purely from the event or need extra instrumentation. Review the PR (#13) and pin to ^1.5 with a lockfile, plus a smoke test asserting listeners fire on an induced failure, before we depend on it in production.
How can I help you explore Laravel packages today?