Packs is an extensible packaging standard and toolchain for organizing large Ruby and Ruby on Rails applications into modular packages.
Managing Packages
# Create a new pack package
bin/packs create packs/profiles
# Add a public API file to a package
bin/packs make_public packs/profiles/app/services/create_profile_service.rb
# Move files between packages
bin/packs move packs/billing packs/profiles/app/services/billing_service.rb
# Add a dependency declaration between packs
bin/packs add_dependency packs/orders packs/inventory
Validating Package Boundaries
Packs integrates with Packwerk to prevent cyclic dependencies and privacy leaks:
# Validate that packs have no circular dependencies
bin/packs validate
# Check for privacy and dependency violations
bin/packs check packs/profiles
# Update package_todo.yml with existing violations baseline
bin/packs update
Linting & Violation Audits
# Check format of package_todo.yml files
bin/packs lint_package_todo_yml_files
# Check package.yml configurations
bin/packs lint_package_yml_files
# List the top violation types in a pack
bin/packs list_top_violations dependency packs/profiles