<!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: Projects::ProjectService — 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#!Projects/ProjectService.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 (P)</a> » <span class='title'><span class='object_link'><a href="../Projects.html" title="Projects (module)">Projects</a></span></span> » <span class="title">ProjectService</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: Projects::ProjectService </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">Projects::ProjectService</li> </ul> <a href="#" class="inheritanceTree">show all</a> </dd> <dt class="r2 last">Defined in:</dt> <dd class="r2 last">lib/projects/project_service.rb</dd> </dl> <div class="clear"></div> <h2>Overview</h2><div class="docstring"> <div class="discussion"> <p>Handles access to project metadata</p> </div> </div> <div class="tags"> </div> <h2>Constant Summary</h2> <dl class="constants"> <dt id="before_create-classvariable" class="">@@before_create = </dt> <dd><pre class="code"><span class='lbracket'>[</span><span class='rbracket'>]</span></pre></dd> <dt id="after_create-classvariable" class="">@@after_create = </dt> <dd><pre class="code"><span class='lbracket'>[</span><span class='rbracket'>]</span></pre></dd> </dl> <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="#client_name-instance_method" title="#client_name (instance method)">- (Object) <strong>client_name</strong> </a> </span> <span class="summary_desc"><div class='inline'> <p>Returns the value of attribute client_name.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#client_root-instance_method" title="#client_root (instance method)">- (Object) <strong>client_root</strong> </a> </span> <span class="summary_desc"><div class='inline'> <p>Returns the value of attribute client_root.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#p4-instance_method" title="#p4 (instance method)">- (Object) <strong>p4</strong> </a> </span> <span class="summary_desc"><div class='inline'> <p>Access to the p4 instance, typically initialized from the user's connection.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#settings-instance_method" title="#settings (instance method)">- (Object) <strong>settings</strong> </a> </span> <span class="summary_desc"><div class='inline'> <p>Application settings (from one of the Sinatra classes).</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="#after_create-class_method" title="after_create (class method)">+ (Object) <strong>after_create</strong> </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#before_create-class_method" title="before_create (class method)">+ (Object) <strong>before_create</strong> </a> </span> <span class="summary_desc"><div class='inline'> <p>Register a callback method called before each create method.</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="#change_service-instance_method" title="#change_service (instance method)">- (Object) <strong>change_service</strong> </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#create-instance_method" title="#create (instance method)">- (Object) <strong>create</strong>(project) </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#file_service-instance_method" title="#file_service (instance method)">- (Object) <strong>file_service</strong> </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#find-instance_method" title="#find (instance method)">- (Object) <strong>find</strong>(names: nil, owners: nil, extensions: nil, members: nil) </a> </span> <span class="summary_desc"><div class='inline'> <p>Returns an array of projects meeting various filter criteria.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#find_by_id-instance_method" title="#find_by_id (instance method)">- (Object) <strong>find_by_id</strong>(id) </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#initialize-instance_method" title="#initialize (instance method)">- (ProjectService) <strong>initialize</strong>(p4: nil, client_name: nil, client_root: nil, settings: nil) </a> </span> <span class="note title constructor">constructor</span> <span class="summary_desc"><div class='inline'> <p>A new instance of ProjectService.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#json_depot_path-instance_method" title="#json_depot_path (instance method)">- (Object) <strong>json_depot_path</strong>(project) </a> </span> <span class="summary_desc"><div class='inline'> <p>The depot path for the indicated project.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#set_default_id-instance_method" title="#set_default_id (instance method)">- (Object) <strong>set_default_id</strong>(project) </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#set_default_owner-instance_method" title="#set_default_owner (instance method)">- (Object) <strong>set_default_owner</strong>(project) </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#set_defaults-instance_method" title="#set_defaults (instance method)">- (Object) <strong>set_defaults</strong>(project) </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#update-instance_method" title="#update (instance method)">- (Object) <strong>update</strong>(project) </a> </span> <span class="summary_desc"><div class='inline'></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="Projects::ProjectService (class)">ProjectService</a></span></tt>) <strong>initialize</strong>(p4: nil, client_name: nil, client_root: nil, settings: nil) </h3><div class="docstring"> <div class="discussion"> <p>Returns a new instance of ProjectService</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 31 32 33 34 35 36</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 31</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>p4:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>client_name:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>client_root:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>settings:</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='ivar'>@p4</span> <span class='op'>=</span> <span class='id identifier rubyid_p4'>p4</span> <span class='ivar'>@client_name</span> <span class='op'>=</span> <span class='id identifier rubyid_client_name'>client_name</span> <span class='ivar'>@client_root</span> <span class='op'>=</span> <span class='id identifier rubyid_client_root'>client_root</span> <span class='ivar'>@settings</span> <span class='op'>=</span> <span class='id identifier rubyid_settings'>settings</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="client_name=-instance_method"></span> <div class="method_details first"> <h3 class="signature first" id="client_name-instance_method"> - (<tt>Object</tt>) <strong>client_name</strong> </h3><div class="docstring"> <div class="discussion"> <p>Returns the value of attribute client_name</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 16 17 18</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 16</span> <span class='kw'>def</span> <span class='id identifier rubyid_client_name'>client_name</span> <span class='ivar'>@client_name</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <span id="client_root=-instance_method"></span> <div class="method_details "> <h3 class="signature " id="client_root-instance_method"> - (<tt>Object</tt>) <strong>client_root</strong> </h3><div class="docstring"> <div class="discussion"> <p>Returns the value of attribute client_root</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 18 19 20</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 18</span> <span class='kw'>def</span> <span class='id identifier rubyid_client_root'>client_root</span> <span class='ivar'>@client_root</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <span id="p4=-instance_method"></span> <div class="method_details "> <h3 class="signature " id="p4-instance_method"> - (<tt>Object</tt>) <strong>p4</strong> </h3><div class="docstring"> <div class="discussion"> <p>Access to the p4 instance, typically initialized from the user's connection</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 14 15 16</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 14</span> <span class='kw'>def</span> <span class='id identifier rubyid_p4'>p4</span> <span class='ivar'>@p4</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <span id="settings=-instance_method"></span> <div class="method_details "> <h3 class="signature " id="settings-instance_method"> - (<tt>Object</tt>) <strong>settings</strong> </h3><div class="docstring"> <div class="discussion"> <p>Application settings (from one of the Sinatra classes)</p> <p>Settings used:</p> <ul><li> <p>project_path_template: defaults to '//.helix-web-services/.projects/<%= project.id %>.json'</p> </li></ul> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 26 27 28</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 26</span> <span class='kw'>def</span> <span class='id identifier rubyid_settings'>settings</span> <span class='ivar'>@settings</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="after_create-class_method"> + (<tt>Object</tt>) <strong>after_create</strong> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 107 108 109</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 107</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_after_create'>after_create</span> <span class='cvar'>@@after_create</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="before_create-class_method"> + (<tt>Object</tt>) <strong>before_create</strong> </h3><div class="docstring"> <div class="discussion"> <p>Register a callback method called before each create method</p> <p>Each service instance can register other service callback types that we use.</p> <p>Each callback actually takes an options hash:</p> <ul><li> <p>p4</p> </li><li> <p>client_name</p> </li><li> <p>client_root</p> </li><li> <p>settings</p> </li></ul> <p>Example:</p> <pre class="code ruby"><code class="ruby"><span class='const'>ProjectService</span><span class='period'>.</span><span class='id identifier rubyid_before_create'>before_create</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_project'>project</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='op'>|</span> <span class='id identifier rubyid_my_service'>my_service</span> <span class='op'>=</span> <span class='const'>MyService</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>p4:</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_p4'>p4</span><span class='rparen'>)</span> <span class='id identifier rubyid_my_service'>my_service</span><span class='period'>.</span><span class='id identifier rubyid_deal_with_it'>deal_with_it</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='kw'>end</span> </code></pre> <p>If your application finds an issue, it should raise an IllegalProjectStructure error (or subclass).</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 103 104 105</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 103</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_before_create'>before_create</span> <span class='cvar'>@@before_create</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="change_service-instance_method"> - (<tt>Object</tt>) <strong>change_service</strong> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 251 252 253 254 255 256 257</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 251</span> <span class='kw'>def</span> <span class='id identifier rubyid_change_service'>change_service</span> <span class='comment'># This is an assertion. You should never hit it. </span> <span class='kw'>if</span> <span class='id identifier rubyid_p4'>p4</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_client_name'>client_name</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_client_root'>client_root</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>change_service accessed without setting p4, client_name, client_root</span><span class='tstring_end'>'</span></span> <span class='kw'>end</span> <span class='const'>Perforce</span><span class='op'>::</span><span class='const'>ChangeService</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>p4:</span> <span class='id identifier rubyid_p4'>p4</span><span class='comma'>,</span> <span class='label'>client_name:</span> <span class='id identifier rubyid_client_name'>client_name</span><span class='comma'>,</span> <span class='label'>client_root:</span> <span class='id identifier rubyid_client_root'>client_root</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="create-instance_method"> - (<tt>Object</tt>) <strong>create</strong>(project) </h3><table class="source_code"> <tr> <td> <pre class="lines"> 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 147 148</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 111</span> <span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='cvar'>@@before_create</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_handler'>handler</span><span class='op'>|</span> <span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>p4:</span> <span class='id identifier rubyid_p4'>p4</span><span class='comma'>,</span> <span class='label'>client_name:</span> <span class='id identifier rubyid_client_name'>client_name</span><span class='comma'>,</span> <span class='label'>client_root:</span> <span class='id identifier rubyid_client_root'>client_root</span><span class='comma'>,</span> <span class='label'>settings:</span> <span class='id identifier rubyid_settings'>settings</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='id identifier rubyid_depot_path'>depot_path</span> <span class='op'>=</span> <span class='id identifier rubyid_json_depot_path'>json_depot_path</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='comment'># TODO we may want to kick the project if this file is not deleted or missing </span> <span class='id identifier rubyid_json_metadata'>json_metadata</span> <span class='op'>=</span> <span class='id identifier rubyid_file_service'>file_service</span><span class='period'>.</span><span class='id identifier rubyid_list_file'>list_file</span><span class='lparen'>(</span><span class='id identifier rubyid_depot_path'>depot_path</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_json_metadata'>json_metadata</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_json_metadata'>json_metadata</span><span class='period'>.</span><span class='id identifier rubyid_revision'>revision</span> <span class='op'>+</span> <span class='int'>1</span> <span class='kw'>else</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='int'>1</span> <span class='kw'>end</span> <span class='id identifier rubyid_set_defaults'>set_defaults</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='id identifier rubyid_json'>json</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_generate'>generate</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='id identifier rubyid_files_to_update'>files_to_update</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='lbrace'>{</span> <span class='label'>depot_file:</span> <span class='id identifier rubyid_depot_path'>depot_path</span><span class='comma'>,</span> <span class='label'>content:</span> <span class='id identifier rubyid_json'>json</span><span class='comma'>,</span> <span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>upload</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>require_version:</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_version'>version</span> <span class='op'>-</span> <span class='int'>1</span> <span class='rbrace'>}</span><span class='rbracket'>]</span> <span class='id identifier rubyid_change_service'>change_service</span><span class='period'>.</span><span class='id identifier rubyid_submit'>submit</span><span class='lparen'>(</span><span class='label'>files:</span> <span class='id identifier rubyid_files_to_update'>files_to_update</span><span class='comma'>,</span> <span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Create project metadata </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>Project</span><span class='period'>.</span><span class='id identifier rubyid_create_from_model'>create_from_model</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='cvar'>@@after_create</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_handler'>handler</span><span class='op'>|</span> <span class='id identifier rubyid_handler'>handler</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>p4:</span> <span class='id identifier rubyid_p4'>p4</span><span class='comma'>,</span> <span class='label'>client_name:</span> <span class='id identifier rubyid_client_name'>client_name</span><span class='comma'>,</span> <span class='label'>client_root:</span> <span class='id identifier rubyid_client_root'>client_root</span><span class='comma'>,</span> <span class='label'>settings:</span> <span class='id identifier rubyid_settings'>settings</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='id identifier rubyid_project'>project</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="file_service-instance_method"> - (<tt>Object</tt>) <strong>file_service</strong> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 259 260 261 262 263 264</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 259</span> <span class='kw'>def</span> <span class='id identifier rubyid_file_service'>file_service</span> <span class='kw'>if</span> <span class='id identifier rubyid_p4'>p4</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>file_service accessed without setting p4</span><span class='tstring_end'>'</span></span> <span class='kw'>end</span> <span class='const'>Perforce</span><span class='op'>::</span><span class='const'>FileService</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>p4:</span> <span class='id identifier rubyid_p4'>p4</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="find-instance_method"> - (<tt>Object</tt>) <strong>find</strong>(names: nil, owners: nil, extensions: nil, members: nil) </h3><div class="docstring"> <div class="discussion"> <p>Returns an array of projects meeting various filter criteria</p> <p>If no filter criteria are used, will basically call find_all.</p> <p>TODO this should collate a list of 'project files' and filter the list of projects, in case</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 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</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 44</span> <span class='kw'>def</span> <span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span><span class='label'>names:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>owners:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>extensions:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>members:</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>Project</span><span class='period'>.</span><span class='id identifier rubyid_dataset'>dataset</span><span class='period'>.</span><span class='id identifier rubyid_select_all'>select_all</span><span class='lparen'>(</span><span class='symbol'>:projects</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>name in ?</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_names'>names</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_names'>names</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>name = ?</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_names'>names</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_names'>names</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>owner in ?</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_owners'>owners</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_owners'>owners</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>owner = ?</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_owners'>owners</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_owners'>owners</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_extensions'>extensions</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>iid in </span><span class='tstring_end'>'</span></span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>(select project_iid from extensions where content_type in ?)</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_extensions'>extensions</span><span class='rparen'>)</span> <span class='kw'>elsif</span> <span class='id identifier rubyid_extensions'>extensions</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>iid in </span><span class='tstring_end'>'</span></span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>(select project_iid from extensions where content_type = ?)</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_extensions'>extensions</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='kw'>if</span> <span class='id identifier rubyid_members'>members</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>iid in </span><span class='tstring_end'>'</span></span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>(select project_iid from members where user in ?)</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_members'>members</span><span class='rparen'>)</span> <span class='period'>.</span><span class='id identifier rubyid_or'>or</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>owner in ?</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_members'>members</span><span class='rparen'>)</span> <span class='kw'>elsif</span> <span class='id identifier rubyid_members'>members</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='id identifier rubyid_ds'>ds</span> <span class='op'>=</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>iid in </span><span class='tstring_end'>'</span></span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>(select project_iid from members where user = ?)</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_members'>members</span><span class='rparen'>)</span> <span class='period'>.</span><span class='id identifier rubyid_or'>or</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>owner = ?</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_members'>members</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='id identifier rubyid_ds'>ds</span><span class='period'>.</span><span class='id identifier rubyid_all'>all</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_model</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="find_by_id-instance_method"> - (<tt>Object</tt>) <strong>find_by_id</strong>(id) </h3><table class="source_code"> <tr> <td> <pre class="lines"> 78 79 80</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 78</span> <span class='kw'>def</span> <span class='id identifier rubyid_find_by_id'>find_by_id</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>Project</span><span class='period'>.</span><span class='id identifier rubyid_dataset'>dataset</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id = ?</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_to_model'>to_model</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="json_depot_path-instance_method"> - (<tt>Object</tt>) <strong>json_depot_path</strong>(project) </h3><div class="docstring"> <div class="discussion"> <p>The depot path for the indicated project.</p> <p>Can be overridden by application settings.</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 243 244 245 246 247 248 249</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 243</span> <span class='kw'>def</span> <span class='id identifier rubyid_json_depot_path'>json_depot_path</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='id identifier rubyid_erb'>erb</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>//.projects/<%= project.id %>.json</span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_settings'>settings</span> <span class='op'>&&</span> <span class='id identifier rubyid_settings'>settings</span><span class='period'>.</span><span class='id identifier rubyid_project_path_template'>project_path_template</span> <span class='id identifier rubyid_erb'>erb</span> <span class='op'>=</span> <span class='id identifier rubyid_settings'>settings</span><span class='period'>.</span><span class='id identifier rubyid_project_path_template'>project_path_template</span> <span class='kw'>end</span> <span class='const'>ERB</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_erb'>erb</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_instance_eval'>instance_eval</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_binding'>binding</span> <span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="set_default_id-instance_method"> - (<tt>Object</tt>) <strong>set_default_id</strong>(project) </h3><table class="source_code"> <tr> <td> <pre class="lines"> 271 272 273 274 275</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 271</span> <span class='kw'>def</span> <span class='id identifier rubyid_set_default_id'>set_default_id</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span> <span class='op'>=</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>[^a-zA-Z0-9_]</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>_</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span> <span class='kw'>end</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="set_default_owner-instance_method"> - (<tt>Object</tt>) <strong>set_default_owner</strong>(project) </h3><table class="source_code"> <tr> <td> <pre class="lines"> 277 278 279 280 281</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 277</span> <span class='kw'>def</span> <span class='id identifier rubyid_set_default_owner'>set_default_owner</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_owner'>owner</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_owner'>owner</span> <span class='op'>=</span> <span class='id identifier rubyid_p4'>p4</span><span class='period'>.</span><span class='id identifier rubyid_user'>user</span> <span class='kw'>end</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="set_defaults-instance_method"> - (<tt>Object</tt>) <strong>set_defaults</strong>(project) </h3><table class="source_code"> <tr> <td> <pre class="lines"> 266 267 268 269</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 266</span> <span class='kw'>def</span> <span class='id identifier rubyid_set_defaults'>set_defaults</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='id identifier rubyid_set_default_id'>set_default_id</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='id identifier rubyid_set_default_owner'>set_default_owner</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="update-instance_method"> - (<tt>Object</tt>) <strong>update</strong>(project) </h3><table class="source_code"> <tr> <td> <pre class="lines"> 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/projects/project_service.rb', line 150</span> <span class='kw'>def</span> <span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='id identifier rubyid_depot_path'>depot_path</span> <span class='op'>=</span> <span class='id identifier rubyid_json_depot_path'>json_depot_path</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='id identifier rubyid_json'>json</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_generate'>generate</span><span class='lparen'>(</span><span class='id identifier rubyid_project'>project</span><span class='rparen'>)</span> <span class='id identifier rubyid_json_metadata'>json_metadata</span> <span class='op'>=</span> <span class='id identifier rubyid_file_service'>file_service</span><span class='period'>.</span><span class='id identifier rubyid_list_file'>list_file</span><span class='lparen'>(</span><span class='id identifier rubyid_depot_path'>depot_path</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_json_metadata'>json_metadata</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_json_metadata'>json_metadata</span><span class='period'>.</span><span class='id identifier rubyid_revision'>revision</span> <span class='op'>+</span> <span class='int'>1</span> <span class='kw'>else</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='int'>1</span> <span class='kw'>end</span> <span class='id identifier rubyid_db_project'>db_project</span> <span class='op'>=</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>Project</span><span class='period'>.</span><span class='id identifier rubyid_dataset'>dataset</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='label'>id:</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>cached project doesn't exist </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_files_to_update'>files_to_update</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='lbrace'>{</span> <span class='label'>depot_file:</span> <span class='id identifier rubyid_depot_path'>depot_path</span><span class='comma'>,</span> <span class='label'>content:</span> <span class='id identifier rubyid_json'>json</span><span class='comma'>,</span> <span class='label'>action:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>upload</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>require_version:</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_version'>version</span> <span class='op'>-</span> <span class='int'>1</span> <span class='rbrace'>}</span><span class='rbracket'>]</span> <span class='id identifier rubyid_change_service'>change_service</span><span class='period'>.</span><span class='id identifier rubyid_submit'>submit</span><span class='lparen'>(</span><span class='label'>files:</span> <span class='id identifier rubyid_files_to_update'>files_to_update</span><span class='comma'>,</span> <span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Updating project </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='comment'># Need the update file data since we can't really predict the revision </span> <span class='id identifier rubyid_json_metadata'>json_metadata</span> <span class='op'>=</span> <span class='id identifier rubyid_file_service'>file_service</span><span class='period'>.</span><span class='id identifier rubyid_list_file'>list_file</span><span class='lparen'>(</span><span class='id identifier rubyid_depot_path'>depot_path</span><span class='rparen'>)</span> <span class='comment'># Update DB project </span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>=</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='kw'>if</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_json_metadata'>json_metadata</span><span class='period'>.</span><span class='id identifier rubyid_revision'>revision</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_description'>description</span> <span class='op'>=</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_description'>description</span> <span class='kw'>if</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_description'>description</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_owner'>owner</span> <span class='op'>=</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_owner'>owner</span> <span class='kw'>if</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_owner'>owner</span> <span class='kw'>if</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_members'>members</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_remove_all_members'>remove_all_members</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_members'>members</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_member'>member</span><span class='op'>|</span> <span class='id identifier rubyid_db_member'>db_member</span> <span class='op'>=</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>Member</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_db_member'>db_member</span><span class='period'>.</span><span class='id identifier rubyid_user'>user</span> <span class='op'>=</span> <span class='id identifier rubyid_member'>member</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_add_member'>add_member</span><span class='lparen'>(</span><span class='id identifier rubyid_db_member'>db_member</span><span class='rparen'>)</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_save'>save</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='kw'>if</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_branches'>branches</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_branches'>branches</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_branch'>branch</span><span class='op'>|</span> <span class='id identifier rubyid_db_branch'>db_branch</span> <span class='op'>=</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>BranchRef</span><span class='period'>.</span><span class='id identifier rubyid_dataset'>dataset</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='label'>project_iid:</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_iid'>iid</span><span class='comma'>,</span> <span class='label'>id:</span> <span class='id identifier rubyid_branch'>branch</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span> <span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='id identifier rubyid_add'>add</span> <span class='op'>=</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_db_branch'>db_branch</span> <span class='op'>=</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>BranchRef</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>if</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='id identifier rubyid_add'>add</span> <span class='op'>=</span> <span class='kw'>true</span> <span class='kw'>end</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span> <span class='op'>=</span> <span class='id identifier rubyid_branch'>branch</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>=</span> <span class='id identifier rubyid_branch'>branch</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='kw'>if</span> <span class='id identifier rubyid_branch'>branch</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_stream'>stream</span> <span class='op'>=</span> <span class='id identifier rubyid_branch'>branch</span><span class='period'>.</span><span class='id identifier rubyid_stream'>stream</span> <span class='kw'>if</span> <span class='id identifier rubyid_branch'>branch</span><span class='period'>.</span><span class='id identifier rubyid_stream'>stream</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_add_branch'>add_branch</span><span class='lparen'>(</span><span class='id identifier rubyid_db_branch'>db_branch</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_add'>add</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_save'>save</span> <span class='kw'>if</span> <span class='id identifier rubyid_add'>add</span> <span class='kw'>if</span> <span class='id identifier rubyid_branch'>branch</span><span class='period'>.</span><span class='id identifier rubyid_view'>view</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_remove_all_view_refs'>remove_all_view_refs</span> <span class='id identifier rubyid_branch'>branch</span><span class='period'>.</span><span class='id identifier rubyid_view'>view</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_v'>v</span><span class='op'>|</span> <span class='id identifier rubyid_db_view'>db_view</span> <span class='op'>=</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>ViewRef</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_db_view'>db_view</span><span class='period'>.</span><span class='id identifier rubyid_depot_path'>depot_path</span> <span class='op'>=</span> <span class='id identifier rubyid_v'>v</span><span class='period'>.</span><span class='id identifier rubyid_depot_path'>depot_path</span> <span class='id identifier rubyid_db_view'>db_view</span><span class='period'>.</span><span class='id identifier rubyid_view_path'>view_path</span> <span class='op'>=</span> <span class='id identifier rubyid_v'>v</span><span class='period'>.</span><span class='id identifier rubyid_view_path'>view_path</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_add_view_ref'>add_view_ref</span><span class='lparen'>(</span><span class='id identifier rubyid_db_view'>db_view</span><span class='rparen'>)</span> <span class='id identifier rubyid_db_branch'>db_branch</span><span class='period'>.</span><span class='id identifier rubyid_save'>save</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='kw'>unless</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_extensions'>extensions</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='kw'>or</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_extensions'>extensions</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_remove_all_extensions'>remove_all_extensions</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_extensions'>extensions</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='op'>|</span> <span class='id identifier rubyid_db_ext'>db_ext</span> <span class='op'>=</span> <span class='const'>HelixWebServices</span><span class='op'>::</span><span class='const'>CacheData</span><span class='op'>::</span><span class='const'>Extension</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='id identifier rubyid_db_ext'>db_ext</span><span class='period'>.</span><span class='id identifier rubyid_content_type'>content_type</span> <span class='op'>=</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_extensions'>extensions</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_content_type'>content_type</span> <span class='id identifier rubyid_db_ext'>db_ext</span><span class='period'>.</span><span class='id identifier rubyid_json'>json</span> <span class='op'>=</span> <span class='id identifier rubyid_project'>project</span><span class='period'>.</span><span class='id identifier rubyid_extensions'>extensions</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_add_extension'>add_extension</span><span class='lparen'>(</span><span class='id identifier rubyid_db_ext'>db_ext</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='kw'>end</span> <span class='id identifier rubyid_db_project'>db_project</span><span class='period'>.</span><span class='id identifier rubyid_save'>save</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Wed Jul 15 15:50:12 2015 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.8.7.6 (ruby-2.2.1). </div> </body> </html>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#42 | 15867 | tjuricek | HWS/NOARCH/2015.1.main/201509230120 | ||
#41 | 15836 | tjuricek | HWS/NOARCH/2015.1.main/201509221612 | ||
#40 | 15826 | tjuricek | HWS/NOARCH/2015.1.main/201509212055 | ||
#39 | 15783 | tjuricek | HWS/NOARCH/2015.1.main/201509180120 | ||
#38 | 15769 | tjuricek | HWS/NOARCH/2015.1.main/201509170120 | ||
#37 | 15758 | tjuricek | HWS/NOARCH/2015.1.main/201509161743 | ||
#36 | 15737 | tjuricek | HWS/NOARCH/2015.1.main/201509150120 | ||
#35 | 15708 | tjuricek | HWS/NOARCH/2015.1.main/201509140120 | ||
#34 | 15699 | tjuricek | HWS/NOARCH/2015.1.main/201509111845 | ||
#33 | 15690 | tjuricek | HWS/NOARCH/2015.1.main/201509110141 | ||
#32 | 15676 | tjuricek | HWS/NOARCH/2015.1.main/201509092205 | ||
#31 | 15589 | tjuricek | Update path to test output and update docs. | ||
#30 | 15542 | tjuricek |
Add spaces to our basic 'component encode' mechanism, and use it for HVE project IDs. In general, this will make the HVE IDs a bit more readable. |
||
#29 | 15517 | tjuricek | Do not require changelist ID for submitting Helix Sync pending changelists. | ||
#28 | 15499 | tjuricek | Naive implementation of helix sync project submit for "helix versioning engine projects". | ||
#27 | 15487 | tjuricek | Add basic ability to create pending changelists for helix sync projects. | ||
#26 | 15479 | tjuricek | Added a basic "HVE project" implementation for creating clients. | ||
#25 | 15447 | tjuricek |
Add simple Example application to list "projects" in a HVE instance. Qt's a little weird to follow, so I may have to find a different kind of example to write. It does work, however. |
||
#24 | 15240 | tjuricek |
Set api level via request path on all Helix Versioning Engine methods. This will allow migration of applications to different P4D versions. Our internal methods (like project API) should attempt to handle backward compatibility similarly. P4WEBAPI-118 |
||
#23 | 15228 | tjuricek | Revise triggers implementation, tests, and documentation. | ||
#22 | 15227 | tjuricek |
Revise implementation, tests, and documentation for protections management. Remove some specs I will not be revising from the helix_web_services project. |
||
#21 | 15225 | tjuricek |
Revise counter implementation, tests, and documentation Wasn't available in the Ruby client before, so, it's now available. |
||
#20 | 15222 | tjuricek |
Revise server specs testing and documentation. Note: also fixed issues with setting P4PORT via headers. For whatever reason, the host setting doesn't seem to work like I expect it to, though P4PORT works just fine. |
||
#19 | 15211 | tjuricek | Implement tests and documentation for label spec management. | ||
#18 | 15210 | tjuricek | Implement tests and documentation for job spec management. | ||
#17 | 15209 | tjuricek | Implement tests and documentation for group spec management. | ||
#16 | 15208 | tjuricek |
Revise 'command' implementation, tests, and documentaiton. This includes a change from a command blacklist to a whitelist. See P4WEBAPI-21 |
||
#15 | 15205 | tjuricek | Implemented tests and documentation for depot spec editing. | ||
#14 | 15189 | tjuricek | Update files implementation, testing, and documentation. | ||
#13 | 15185 | tjuricek | Update user spec management implementation, tests, and documentation. | ||
#12 | 15144 | tjuricek |
Setup stream spec tests and documentation. Also revised the documentation folder http_p4_web_api -> helix_versioning_engine |
||
#11 | 15132 | tjuricek | Provde a basic submit -e mechanism on classic perforce workspaces. | ||
#10 | 15110 | tjuricek | Revise changes methods for new p4 connection handling, add server specs, remove model references in client, and update asciidoc documentation. | ||
#9 | 15099 | tjuricek | Revise project services to be our simple 'container' for other systems. | ||
#8 | 15098 | tjuricek |
Revised project services to GET-only forms. With Helix Sync revising to integrate purely with Helix Cloud, this is the only thing we can reasonably define. |
||
#7 | 15090 | tjuricek |
Update _proposed_ API for project services. This is *very likely* to change, and will not be implemented until reviewed. |
||
#6 | 15078 | tjuricek |
clients spec method revisions Updated some other documentation. |
||
#5 | 15077 | tjuricek |
Add new 'model' technique, revised branch spec operations, test Auth::Middleware. The Ruby client now does *not* strictly type anything, but extends OpenStruct with helper methods to help deal with inconsistent data formats. See the OpenModel class documentation for more details. The Auth::Middleware class is also *finally* implemented as well. This does not take into account all possible variations of server behavior (yet), but that will happen in follow-up work. |
||
#4 | 15073 | tjuricek | Update Auth::Middleware and add spec | ||
#3 | 15053 | tjuricek |
Revise the client API to use the new login method. The current specs will need to be revised since data normalization is moving out of the server and into the client. |
||
#2 | 15038 | tjuricek | Document 'login' auth method and client programming overview. | ||
#1 | 15032 | tjuricek |
Starting config and doc revisions. System is now broken while revisions underway. Configuration of the p4d connection is now done via a single HWSSettings middleware object injected into the Rack env. The HWSP4Cleanup middleware now cleans up any p4 injected into the Rack env. The Auth::App class now mostly just contains one method to generate a p4 ticket. /auth/v1/login. Added yard documentation for the main project. Yard docs have been reconfigured to dump into build/ directories. This should probably be done with each release. Hm... The top level rake file contains a task, 'all:doc', to update our documentation. This should probably be run for each checkin. Hm... Specs are now using Rack::Test on top of a 'live' p4d. I'd suggest you still use the p4util mechanism, which now dumps to a /tmp folder, so we can safely add P4IGNORE rules back into your local .p4config file. Old 'perforce' application now called 'helix_versioning_engine'. Removing cache data. Helix Sync may be slow. It may also get axed. We'll see. |