Examples
Welcome to the Ruleur examples section. Here you'll find practical, real-world examples of using Ruleur to solve common business logic problems.
Featured Examples
Permission Rules
Implement role-based access control and complex permission logic.
Use Cases:
- Role-based access control (RBAC)
- Resource ownership checks
- Hierarchical permissions
- Feature flags and entitlements
Workflow Automation
Build approval workflows and state machine logic.
Use Cases:
- Document approval workflows
- Order processing pipelines
- Multi-step validation flows
- State transitions
Dynamic Pricing
Calculate prices, discounts, and fees based on business rules.
Use Cases:
- Tiered pricing models
- Dynamic discounts
- Shipping cost calculation
- Promotional rules
Real-World Cases
Complete examples from production systems.
Use Cases:
- E-commerce order validation
- SaaS feature access
- Insurance policy evaluation
- Content moderation
Quick Examples
Simple Permission Check
ruby
engine = Ruleur.define do
rule 'admin_access' do
conditions do
all?(user(:admin?))
end
actions do
set :access, true
end
end
rule 'owner_update' do
conditions do
all?(user(:owner?, record))
end
actions do
set :update, true
end
end
end
result = engine.run(user: current_user, record: @post)
can_update = result[:update] # => true or nilDiscount Calculation
ruby
engine = Ruleur.define do
rule 'bulk_discount', salience: 10 do
match { all?(order(:total).gt?(500)) }
actions { set :discount, 0.15 }
end
rule 'vip_discount', salience: 20 do
match { all?(customer(:vip?)) }
actions { set :discount, 0.20 }
end
end
result = engine.run(order: order, customer: customer)
discount = result[:discount] # Higher salience winsWorkflow State Transition
ruby
engine = Ruleur.define do
rule 'can_submit' do
conditions do
all?(
document(:draft?),
document(:complete?),
not?(document(:submitted?))
)
end
actions do
set :submit, true
end
end
rule 'can_approve' do
conditions do
all?(
user(:approver?),
document(:submitted?),
not?(document(:approved?))
)
end
actions do
set :approve, true
end
end
endExample Patterns
Fact Checking Pattern
Check conditions and set result flags:
ruby
rule 'validation' do
conditions do
all?(
user(:authenticated?),
user(:email_verified?),
not?(user(:banned?))
)
end
actions { set :user_valid, true }
endCalculation Pattern
Compute values based on inputs:
ruby
rule 'calculate_total' do
conditions do
all?(order(:items).present)
end
actions do
order = context[:order]
subtotal = order.items.sum(&:price)
tax = subtotal * 0.08
shipping = calculate_shipping(order)
set :subtotal, subtotal
set :tax, tax
set :shipping, shipping
set :total, subtotal + tax + shipping
end
endChaining Pattern
Rules that depend on other rules' results:
ruby
rule 'step1' do
match { all?(input(:valid?)) }
actions { set :step1_complete, true }
end
rule 'step2' do
conditions do
all?(
flag(:step1_complete),
input(:ready?)
)
end
actions { set :step2_complete, true }
endLoading Examples
All examples are available in the repository:
bash
git clone https://github.com/tagliala/ruleur.git
cd ruleur/examplesTry It Yourself
Each example includes:
- Complete working code
- Test cases
- YAML versions
- Variations and alternatives
Need Help?
- Check the Guide for concepts
- See the API Reference for details
- Join discussions on GitHub
Contributing Examples
Have a great example? We'd love to include it! See our Contributing Guide.