<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> Class: Ballast::Service — Documentation by YARD 0.8.7.6 </title> <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" /> <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" /> <script type="text/javascript" charset="utf-8"> hasFrames = window.top.frames.main ? true : false; relpath = '../'; framesUrl = "../frames.html#!Ballast/Service.html"; </script> <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script> <script type="text/javascript" charset="utf-8" src="../js/app.js"></script> </head> <body> <div id="header"> <div id="menu"> <a href="../_index.html">Index (S)</a> » <span class='title'><span class='object_link'><a href="../Ballast.html" title="Ballast (module)">Ballast</a></span></span> » <span class="title">Service</span> <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div> </div> <div id="search"> <a class="full_list_link" id="class_list_link" href="../class_list.html"> Class List </a> <a class="full_list_link" id="method_list_link" href="../method_list.html"> Method List </a> <a class="full_list_link" id="file_list_link" href="../file_list.html"> File List </a> </div> <div class="clear"></div> </div> <iframe id="search_frame"></iframe> <div id="content"><h1>Class: Ballast::Service </h1> <dl class="box"> <dt class="r1">Inherits:</dt> <dd class="r1"> <span class="inheritName">Object</span> <ul class="fullTree"> <li>Object</li> <li class="next">Ballast::Service</li> </ul> <a href="#" class="inheritanceTree">show all</a> </dd> <dt class="r2 last">Defined in:</dt> <dd class="r2 last">lib/ballast/service.rb</dd> </dl> <div class="clear"></div> <h2>Overview</h2><div class="docstring"> <div class="discussion"> <p>A class which implements a common abstraction for services.</p> </div> </div> <div class="tags"> </div><h2>Defined Under Namespace</h2> <p class="children"> <strong class="classes">Classes:</strong> <span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span> </p> <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#owner-instance_method" title="#owner (instance method)">- (Object|NilClass) <strong>owner</strong> </a> </span> <span class="note title readonly">readonly</span> <span class="summary_desc"><div class='inline'><p>The owner of this service.</p> </div></span> </li> </ul> <h2> Class Method Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small> </h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#call-class_method" title="call (class method)">+ (Response) <strong>call</strong>(operation = :perform, owner: nil, raise_errors: false, params: {}, **kwargs, &block) </a> </span> <span class="summary_desc"><div class='inline'><p>Invokes one of the operations exposed by the service.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#fail%21-class_method" title="fail! (class method)">+ (Object) <strong>fail!</strong>(details, on_validation: false) </a> </span> <span class="summary_desc"><div class='inline'><p>Marks the failure of the operation.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#handle_failure-class_method" title="handle_failure (class method)">+ (Response) <strong>handle_failure</strong>(failure, raise_errors) </a> </span> <span class="summary_desc"><div class='inline'><p>Handles a failure.</p> </div></span> </li> </ul> <h2> Instance Method Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small> </h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#call-instance_method" title="#call (instance method)">- (Response) <strong>call</strong>(operation = :perform, owner: nil, raise_errors: false, params: {}, **kwargs, &block) </a> </span> <span class="summary_desc"><div class='inline'><p>Invokes one of the operations exposed by the service.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#fail%21-instance_method" title="#fail! (instance method)">- (Object) <strong>fail!</strong>(details, on_validation: false) </a> </span> <span class="summary_desc"><div class='inline'><p>Marks the failure of the operation.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#initialize-instance_method" title="#initialize (instance method)">- (Service) <strong>initialize</strong>(owner = nil) </a> </span> <span class="note title constructor">constructor</span> <span class="summary_desc"><div class='inline'><p>Creates a service object.</p> </div></span> </li> </ul> <div id="constructor_details" class="method_details_list"> <h2>Constructor Details</h2> <div class="method_details first"> <h3 class="signature first" id="initialize-instance_method"> - (<tt><span class='object_link'><a href="" title="Ballast::Service (class)">Service</a></span></tt>) <strong>initialize</strong>(owner = nil) </h3><div class="docstring"> <div class="discussion"> <p>Creates a service object.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>owner</span> <span class='type'>(<tt>Object|NilClass</tt>)</span> <em class="default">(defaults to: <tt>nil</tt>)</em> — <div class='inline'><p>The owner of the service.</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 108 109 110</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 108</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_owner'>owner</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='ivar'>@owner</span> <span class='op'>=</span> <span class='id identifier rubyid_owner'>owner</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> <div id="instance_attr_details" class="attr_details"> <h2>Instance Attribute Details</h2> <span id=""></span> <div class="method_details first"> <h3 class="signature first" id="owner-instance_method"> - (<tt>Object|NilClass</tt>) <strong>owner</strong> <span class="extras">(readonly)</span> </h3><div class="docstring"> <div class="discussion"> <p>Returns The owner of this service.</p> </div> </div> <div class="tags"> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt>Object|NilClass</tt>)</span> — <div class='inline'><p>The owner of this service.</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 11</span> <span class='kw'>class</span> <span class='const'>Service</span> <span class='comment'># A response to a service invocation. </span> <span class='comment'># </span> <span class='comment'># @attribute [r] success </span> <span class='comment'># @return [Boolean] Whether the invocation was successful or not. </span> <span class='comment'># @attribute [r] data </span> <span class='comment'># @return [Object] The data returned by the operation. </span> <span class='comment'># @attribute [r] errors </span> <span class='comment'># @return [Array] The errors returned by the operation. </span> <span class='kw'>class</span> <span class='const'>Response</span> <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:success</span><span class='comma'>,</span> <span class='symbol'>:data</span><span class='comma'>,</span> <span class='symbol'>:errors</span> <span class='comment'># Creates a new service response. </span> <span class='comment'># </span> <span class='comment'># @param success [Boolean] Whether the invocation was successful or not. </span> <span class='comment'># @param data [Object|NilClass] The data returned by the operation. </span> <span class='comment'># @param errors [Array|NilClass] The errors returned by the operation. </span> <span class='comment'># @param error [Object|NilClass] Alias for errors. *Ignored if `errors` is present.* </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>errors:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='id identifier rubyid_errors'>errors</span> <span class='op'>||=</span> <span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span> <span class='ivar'>@success</span> <span class='op'>=</span> <span class='id identifier rubyid_success'>success</span><span class='period'>.</span><span class='id identifier rubyid_to_boolean'>to_boolean</span> <span class='ivar'>@data</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span> <span class='ivar'>@errors</span> <span class='op'>=</span> <span class='id identifier rubyid_errors'>errors</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='lparen'>(</span><span class='label'>no_duplicates:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>compact:</span> <span class='kw'>true</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='comment'># Returns whether the invocation was successful or not. </span> <span class='comment'># </span> <span class='comment'># @return [Boolean] `true` if the service invocation was successful, `false` otherwise. </span> <span class='kw'>def</span> <span class='id identifier rubyid_success?'>success?</span> <span class='comment'># TODO@PI: Ignore rubocop on this </span> <span class='ivar'>@success</span> <span class='kw'>end</span> <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:successful?</span><span class='comma'>,</span> <span class='symbol'>:success?</span> <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:succeeded?</span><span class='comma'>,</span> <span class='symbol'>:success?</span> <span class='comment'># Returns whether the invocation failed or not. </span> <span class='comment'># </span> <span class='comment'># @return [Boolean] `true` if the service invocation failed, `false` otherwise. </span> <span class='kw'>def</span> <span class='id identifier rubyid_fail?'>fail?</span> <span class='op'>!</span><span class='ivar'>@success</span> <span class='kw'>end</span> <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:failed?</span><span class='comma'>,</span> <span class='symbol'>:fail?</span> <span class='comment'># Returns the first error returned by the operation. </span> <span class='comment'># </span> <span class='comment'># @return [Object] The first error returned by the service. </span> <span class='kw'>def</span> <span class='id identifier rubyid_error'>error</span> <span class='ivar'>@errors</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='kw'>end</span> <span class='comment'># Converts this response to a AJAX response. </span> <span class='comment'># </span> <span class='comment'># @return [AjaxResponse] The AJAX response, which will include only the first error. </span> <span class='kw'>def</span> <span class='id identifier rubyid_as_ajax_response'>as_ajax_response</span> <span class='id identifier rubyid_status'>status</span><span class='comma'>,</span> <span class='id identifier rubyid_error_message'>error_message</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_successful?'>successful?</span> <span class='lbracket'>[</span><span class='symbol'>:ok</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rbracket'>]</span> <span class='kw'>elsif</span> <span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span> <span class='lbracket'>[</span><span class='id identifier rubyid_error'>error</span><span class='lbracket'>[</span><span class='symbol'>:status</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_error'>error</span><span class='lbracket'>[</span><span class='symbol'>:error</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='kw'>else</span> <span class='lbracket'>[</span><span class='symbol'>:unknown</span><span class='comma'>,</span> <span class='id identifier rubyid_error'>error</span><span class='rbracket'>]</span> <span class='kw'>end</span> <span class='const'>AjaxResponse</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='id identifier rubyid_status'>status</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_error_message'>error_message</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:owner</span> <span class='comment'># Invokes one of the operations exposed by the service. </span> <span class='comment'># </span> <span class='comment'># @param operation [String] The operation to invoke. </span> <span class='comment'># @param owner [Object|NilClass] The owner of the service. </span> <span class='comment'># @param raise_errors [Boolean] Whether to raise errors instead of returning a failure. </span> <span class='comment'># @param params [Hash] The parameters to pass to the service. </span> <span class='comment'># @param kwargs [Hash] Other modifiers to pass to the service. </span> <span class='comment'># @param block [Proc] A lambda to pass to the service. </span> <span class='comment'># @return [Response] The response of the service. </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span> <span class='op'>=</span> <span class='symbol'>:perform</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_errors:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='int'>501</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Unsupported operation </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='rparen'>)</span> <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='id identifier rubyid_owner'>owner</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>rescue</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span> <span class='op'>=></span> <span class='id identifier rubyid_failure'>failure</span> <span class='id identifier rubyid_handle_failure'>handle_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='comment'># Marks the failure of the operation. </span> <span class='comment'># </span> <span class='comment'># @param details [Object] The error(s) occurred. </span> <span class='comment'># @param on_validation [Boolean] Whether the error(s) was/were validation error(s). </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='kw'>false</span><span class='rparen'>)</span> <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='id identifier rubyid_on_validation'>on_validation</span> <span class='op'>?</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>ValidationFailure</span> <span class='op'>:</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='id identifier rubyid_details'>details</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='comment'># Creates a service object. </span> <span class='comment'># </span> <span class='comment'># @param owner [Object|NilClass] The owner of the service. </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_owner'>owner</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='ivar'>@owner</span> <span class='op'>=</span> <span class='id identifier rubyid_owner'>owner</span> <span class='kw'>end</span> <span class='comment'># Invokes one of the operations exposed by the service. </span> <span class='comment'># </span> <span class='comment'># @param operation [String] The operation to invoke. </span> <span class='comment'># @param owner [Object|NilClass] The owner of the service. </span> <span class='comment'># @param raise_errors [Boolean] Whether to raise errors instead of returning a failure. </span> <span class='comment'># @param params [Hash] The parameters to pass to the service. </span> <span class='comment'># @param kwargs [Hash] Other modifiers to pass to the service. </span> <span class='comment'># @param block [Proc] A lambda to pass to the service. </span> <span class='comment'># @return [Response] The response of the service. </span> <span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span> <span class='op'>=</span> <span class='symbol'>:perform</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_errors:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> <span class='comment'># PI: Ignore Roodi on this method </span> <span class='ivar'>@owner</span> <span class='op'>=</span> <span class='id identifier rubyid_owner'>owner</span> <span class='kw'>if</span> <span class='id identifier rubyid_owner'>owner</span> <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='int'>501</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Unsupported operation </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>#</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='rparen'>)</span> <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>rescue</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span> <span class='op'>=></span> <span class='id identifier rubyid_failure'>failure</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='symbol'>:handle_failure</span><span class='comma'>,</span> <span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='comment'># Marks the failure of the operation. </span> <span class='comment'># </span> <span class='comment'># @param details [Object] The error(s) occurred. </span> <span class='comment'># @param on_validation [Boolean] Whether the error(s) was/were validation error(s). </span> <span class='kw'>def</span> <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='kw'>false</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='id identifier rubyid_on_validation'>on_validation</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='comment'># Handles a failure. </span> <span class='comment'># </span> <span class='comment'># @param failure [Failure] The failure to handle. </span> <span class='comment'># @param raise_errors [Boolean] If `true` it will simply raise the error, otherwise it will return a failure as as Service::Response. </span> <span class='comment'># @return [Response] A failure response. </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_handle_failure'>handle_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span> <span class='op'>?</span> <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>false</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_failure'>failure</span><span class='period'>.</span><span class='id identifier rubyid_details'>details</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> <div id="class_method_details" class="method_details_list"> <h2>Class Method Details</h2> <div class="method_details first"> <h3 class="signature first" id="call-class_method"> + (<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>) <strong>call</strong>(operation = :perform, owner: nil, raise_errors: false, params: {}, **kwargs, &block) </h3><div class="docstring"> <div class="discussion"> <p>Invokes one of the operations exposed by the service.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>operation</span> <span class='type'>(<tt>String</tt>)</span> <em class="default">(defaults to: <tt>:perform</tt>)</em> — <div class='inline'><p>The operation to invoke.</p> </div> </li> <li> <span class='name'>owner</span> <span class='type'>(<tt>Object|NilClass</tt>)</span> — <div class='inline'><p>The owner of the service.</p> </div> </li> <li> <span class='name'>raise_errors</span> <span class='type'>(<tt>Boolean</tt>)</span> — <div class='inline'><p>Whether to raise errors instead of returning a failure.</p> </div> </li> <li> <span class='name'>params</span> <span class='type'>(<tt>Hash</tt>)</span> — <div class='inline'><p>The parameters to pass to the service.</p> </div> </li> <li> <span class='name'>kwargs</span> <span class='type'>(<tt>Hash</tt>)</span> — <div class='inline'><p>Other modifiers to pass to the service.</p> </div> </li> <li> <span class='name'>block</span> <span class='type'>(<tt>Proc</tt>)</span> — <div class='inline'><p>A lambda to pass to the service.</p> </div> </li> </ul> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>)</span> — <div class='inline'><p>The response of the service.</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 90 91 92 93 94 95</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 90</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span> <span class='op'>=</span> <span class='symbol'>:perform</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_errors:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='int'>501</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Unsupported operation </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='rparen'>)</span> <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='id identifier rubyid_owner'>owner</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>rescue</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span> <span class='op'>=></span> <span class='id identifier rubyid_failure'>failure</span> <span class='id identifier rubyid_handle_failure'>handle_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="fail!-class_method"> + (<tt>Object</tt>) <strong>fail!</strong>(details, on_validation: false) </h3><div class="docstring"> <div class="discussion"> <p>Marks the failure of the operation.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>details</span> <span class='type'>(<tt>Object</tt>)</span> — <div class='inline'><p>The error(s) occurred.</p> </div> </li> <li> <span class='name'>on_validation</span> <span class='type'>(<tt>Boolean</tt>)</span> — <div class='inline'><p>Whether the error(s) was/were validation error(s).</p> </div> </li> </ul> <p class="tag_title">Raises:</p> <ul class="raise"> <li> <span class='type'>(<tt>on_validation ? <span class='object_link'><a href="Errors/ValidationFailure.html" title="Ballast::Errors::ValidationFailure (class)">Errors::ValidationFailure</a></span> : <span class='object_link'><a href="Errors/Failure.html" title="Ballast::Errors::Failure (class)">Errors::Failure</a></span></tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 101 102 103</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 101</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='kw'>false</span><span class='rparen'>)</span> <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='id identifier rubyid_on_validation'>on_validation</span> <span class='op'>?</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>ValidationFailure</span> <span class='op'>:</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='id identifier rubyid_details'>details</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="handle_failure-class_method"> + (<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>) <strong>handle_failure</strong>(failure, raise_errors) </h3><div class="docstring"> <div class="discussion"> <p>Handles a failure.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>failure</span> <span class='type'>(<tt>Failure</tt>)</span> — <div class='inline'><p>The failure to handle.</p> </div> </li> <li> <span class='name'>raise_errors</span> <span class='type'>(<tt>Boolean</tt>)</span> — <div class='inline'><p>If <code>true</code> it will simply raise the error, otherwise it will return a failure as as Service::Response.</p> </div> </li> </ul> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>)</span> — <div class='inline'><p>A failure response.</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 143 144 145</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 143</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_handle_failure'>handle_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span> <span class='op'>?</span> <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>false</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_failure'>failure</span><span class='period'>.</span><span class='id identifier rubyid_details'>details</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> <div id="instance_method_details" class="method_details_list"> <h2>Instance Method Details</h2> <div class="method_details first"> <h3 class="signature first" id="call-instance_method"> - (<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>) <strong>call</strong>(operation = :perform, owner: nil, raise_errors: false, params: {}, **kwargs, &block) </h3><div class="docstring"> <div class="discussion"> <p>Invokes one of the operations exposed by the service.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>operation</span> <span class='type'>(<tt>String</tt>)</span> <em class="default">(defaults to: <tt>:perform</tt>)</em> — <div class='inline'><p>The operation to invoke.</p> </div> </li> <li> <span class='name'>owner</span> <span class='type'>(<tt>Object|NilClass</tt>)</span> — <div class='inline'><p>The owner of the service.</p> </div> </li> <li> <span class='name'>raise_errors</span> <span class='type'>(<tt>Boolean</tt>)</span> — <div class='inline'><p>Whether to raise errors instead of returning a failure.</p> </div> </li> <li> <span class='name'>params</span> <span class='type'>(<tt>Hash</tt>)</span> — <div class='inline'><p>The parameters to pass to the service.</p> </div> </li> <li> <span class='name'>kwargs</span> <span class='type'>(<tt>Hash</tt>)</span> — <div class='inline'><p>Other modifiers to pass to the service.</p> </div> </li> <li> <span class='name'>block</span> <span class='type'>(<tt>Proc</tt>)</span> — <div class='inline'><p>A lambda to pass to the service.</p> </div> </li> </ul> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>)</span> — <div class='inline'><p>The response of the service.</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 121 122 123 124 125 126 127 128</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 121</span> <span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span> <span class='op'>=</span> <span class='symbol'>:perform</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_errors:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span> <span class='comment'># PI: Ignore Roodi on this method </span> <span class='ivar'>@owner</span> <span class='op'>=</span> <span class='id identifier rubyid_owner'>owner</span> <span class='kw'>if</span> <span class='id identifier rubyid_owner'>owner</span> <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='int'>501</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Unsupported operation </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>#</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='rparen'>)</span> <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>rescue</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span> <span class='op'>=></span> <span class='id identifier rubyid_failure'>failure</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='symbol'>:handle_failure</span><span class='comma'>,</span> <span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="fail!-instance_method"> - (<tt>Object</tt>) <strong>fail!</strong>(details, on_validation: false) </h3><div class="docstring"> <div class="discussion"> <p>Marks the failure of the operation.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>details</span> <span class='type'>(<tt>Object</tt>)</span> — <div class='inline'><p>The error(s) occurred.</p> </div> </li> <li> <span class='name'>on_validation</span> <span class='type'>(<tt>Boolean</tt>)</span> — <div class='inline'><p>Whether the error(s) was/were validation error(s).</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 134 135 136</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 134</span> <span class='kw'>def</span> <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='kw'>false</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='id identifier rubyid_on_validation'>on_validation</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Sun Nov 2 09:40:00 2014 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.8.7.6 (ruby-2.1.3). </div> </body> </html>