Skip to content

Instantly share code, notes, and snippets.

@pewniak747
Created October 3, 2014 16:46
Show Gist options
  • Save pewniak747/02cf0616169e341c41a5 to your computer and use it in GitHub Desktop.
Save pewniak747/02cf0616169e341c41a5 to your computer and use it in GitHub Desktop.
class SomeService
def call
call_service_a
end
private
def service_a
# ... uses status objects
end
def service_b
# ... uses status objects
end
def service_c
# ... raises exceptions
end
def call_service_a
result = service_a.call
if result.success?
call_service_b(result.data)
else
Error.new("service A failed")
end
end
def call_service_b(data_from_a)
result = service_b.call
if result.success?
call_service_c(data_from_a, result.data)
else
Error.new("service B failed")
end
end
def call_service_c(data_from_a, data_from_b)
result = service_c.call
Success.new("yay!")
rescue ServiceCException
Error.new("service C failed")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment