rbbt-rest 1.8.2 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/rbbt/rest/knowledge_base/helpers.rb +4 -2
 - data/share/views/error.haml +24 -11
 - data/share/views/public/js/rbbt.exception.js +5 -2
 - data/share/views/public/js/rbbt.plots/rbbt.plots.aes.js +19 -4
 - data/share/views/public/js/rbbt.plots/rbbt.plots.graph.adapters.js +3 -2
 - data/share/views/public/js/rbbt.plots/rbbt.plots.graph.js +2 -0
 - data/share/views/public/js/rbbt.plots/rbbt.plots.graph.kb.js +8 -2
 - data/share/views/wait.haml +23 -22
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8bc8c84dbe3d17dfa0f63f7a513da1d52ed7e150
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: fc73cf5e1d13d176ab35fa2e5f065d9756033cc7
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 384ceaf737b835b8cba9e49b631b78f2d4b8b2d16c0f1d74b9cb532912daf6599491e22f67d63ddd6c6eb276501d43eb323233daf0c17d54f4544fe632a9b610
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e96e260ef7ee2bfc4f78d46367c3a2a6f1785991a4978dab3b974ebf92a954472d57fa2bcfd72ed847cc46a398b35daff9c9ab3b38a075b7dd940774db740c15
         
     | 
| 
         @@ -54,8 +54,10 @@ module KnowledgeBaseRESTHelpers 
     | 
|
| 
       54 
54 
     | 
    
         
             
              def get_knowledge_base(name=:user, namespace = nil)
         
     | 
| 
       55 
55 
     | 
    
         
             
                kb = case name.to_s
         
     | 
| 
       56 
56 
     | 
    
         
             
                       when 'step'
         
     | 
| 
       57 
     | 
    
         
            -
                          
     | 
| 
       58 
     | 
    
         
            -
                          
     | 
| 
      
 57 
     | 
    
         
            +
                         step_path = cookies[:step_path]
         
     | 
| 
      
 58 
     | 
    
         
            +
                         step_path = params[:step_path] if step_path.nil?
         
     | 
| 
      
 59 
     | 
    
         
            +
                         raise "No step_path" if step_path.nil?
         
     | 
| 
      
 60 
     | 
    
         
            +
                         dir = step_path + '.files/knowledge_base'
         
     | 
| 
       59 
61 
     | 
    
         
             
                         KnowledgeBase.load(dir)
         
     | 
| 
       60 
62 
     | 
    
         
             
                       when "user"
         
     | 
| 
       61 
63 
     | 
    
         
             
                         user_kb(user)
         
     | 
    
        data/share/views/error.haml
    CHANGED
    
    | 
         @@ -1,20 +1,33 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            .error
         
     | 
| 
       2 
     | 
    
         
            -
              %h5 Error on #{format_name File.basename(job.name)}
         
     | 
| 
      
 1 
     | 
    
         
            +
            .error.ui.segment.error.message
         
     | 
| 
      
 2 
     | 
    
         
            +
              %h5.ui.header Error on #{format_name File.basename(job.name)}
         
     | 
| 
       3 
3 
     | 
    
         
             
              - if job.messages and job.messages.any?
         
     | 
| 
       4 
     | 
    
         
            -
                % 
     | 
| 
       5 
     | 
    
         
            -
                   
     | 
| 
      
 4 
     | 
    
         
            +
                %pre.error_message.ui.basic.segment.content
         
     | 
| 
      
 5 
     | 
    
         
            +
                  = CGI.escapeHTML(job.messages[-1] || "")
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
              - if defined? job.info_file and File.exists? job.info_file and request.env["REQUEST_URI"].include? job.name
         
     | 
| 
       9 
9 
     | 
    
         
             
                - clean_url = add_GET_param(request.env["REQUEST_URI"], "_update", "clean")
         
     | 
| 
       10 
     | 
    
         
            -
                %a(href=clean_url) Clean
         
     | 
| 
      
 10 
     | 
    
         
            +
                %a.ui.button.blue(href=clean_url) Clean
         
     | 
| 
       11 
11 
     | 
    
         
             
              - else
         
     | 
| 
       12 
12 
     | 
    
         
             
                - clean_url = add_GET_param(request.env["REQUEST_URI"], "_update", "reload")
         
     | 
| 
       13 
     | 
    
         
            -
                %a(href=clean_url) Reload
         
     | 
| 
      
 13 
     | 
    
         
            +
                %a.ui.blue.button(href=clean_url) Reload
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
            - backtrace = job.info[:backtrace]
         
     | 
| 
      
 16 
     | 
    
         
            +
            - if backtrace and backtrace.any?
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              %ul.error_backtrace.clean_list.ui.segment
         
     | 
| 
      
 19 
     | 
    
         
            +
                .ui.header Backtrace
         
     | 
| 
      
 20 
     | 
    
         
            +
                %pre.ui.content
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - require 'rbbt/util/colorize'
         
     | 
| 
      
 22 
     | 
    
         
            +
                  - pallete = {}
         
     | 
| 
      
 23 
     | 
    
         
            +
                  - matches = %w(views workflows rbbt).collect{|w| /\/#{w}/ }
         
     | 
| 
      
 24 
     | 
    
         
            +
                  - colors = Colorize.distinct(matches)
         
     | 
| 
       19 
25 
     | 
    
         
             
                  - backtrace.each do |line|
         
     | 
| 
       20 
     | 
    
         
            -
                     
     | 
| 
      
 26 
     | 
    
         
            +
                    - color = nil
         
     | 
| 
      
 27 
     | 
    
         
            +
                    - matches.each_with_index do |m,i|
         
     | 
| 
      
 28 
     | 
    
         
            +
                      - if m.match(line)
         
     | 
| 
      
 29 
     | 
    
         
            +
                        - color = colors[i].darken(0.3).to_s 
         
     | 
| 
      
 30 
     | 
    
         
            +
                        - break
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                    - style = color ? ';color:'+color : ""
         
     | 
| 
      
 33 
     | 
    
         
            +
                    %li(style="font-size:0.9em;font-family:monospace#{style}")= line.sub('`',"'")
         
     | 
| 
         @@ -18,12 +18,15 @@ rbbt.exception.report = function(err){ 
     | 
|
| 
       18 
18 
     | 
    
         
             
              }
         
     | 
| 
       19 
19 
     | 
    
         
             
            }
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            rbbt.try = function(func){
         
     | 
| 
      
 21 
     | 
    
         
            +
            rbbt.try = function(func, catch_function){
         
     | 
| 
       22 
22 
     | 
    
         
             
              var f = function(){
         
     | 
| 
       23 
23 
     | 
    
         
             
                try {
         
     | 
| 
       24 
24 
     | 
    
         
             
                  return func.apply(this, arguments)
         
     | 
| 
       25 
25 
     | 
    
         
             
                }catch(err){
         
     | 
| 
       26 
     | 
    
         
            -
                   
     | 
| 
      
 26 
     | 
    
         
            +
                  if (catch_function)
         
     | 
| 
      
 27 
     | 
    
         
            +
                    catch_function(err)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  else
         
     | 
| 
      
 29 
     | 
    
         
            +
                    rbbt.exception.report(err)
         
     | 
| 
       27 
30 
     | 
    
         
             
                }
         
     | 
| 
       28 
31 
     | 
    
         
             
              }
         
     | 
| 
       29 
32 
     | 
    
         
             
              return f
         
     | 
| 
         @@ -52,7 +52,7 @@ rbbt.plots.aes.get_properties = function(list, rules){ 
     | 
|
| 
       52 
52 
     | 
    
         
             
                  eval('extract='+extract)
         
     | 
| 
       53 
53 
     | 
    
         
             
                }
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                if (rule.entity_type && rule.entity_type != list.type) return 
         
     | 
| 
      
 55 
     | 
    
         
            +
                if (rule.entity_type && rule.entity_type != list.type && rule.entity_type != list.format) return 
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
       57 
57 
     | 
    
         
             
                if (rule.info){
         
     | 
| 
       58 
58 
     | 
    
         
             
                  var property = rule.property
         
     | 
| 
         @@ -66,6 +66,14 @@ rbbt.plots.aes.get_properties = function(list, rules){ 
     | 
|
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
                  deferred.resolve(value)
         
     | 
| 
       68 
68 
     | 
    
         
             
                  promise = deferred.promise
         
     | 
| 
      
 69 
     | 
    
         
            +
                  if (extract){ 
         
     | 
| 
      
 70 
     | 
    
         
            +
                    promise = promise.then(function(res){ 
         
     | 
| 
      
 71 
     | 
    
         
            +
                      if (typeof res == 'object')
         
     | 
| 
      
 72 
     | 
    
         
            +
                        return res.map(function(elem){ return extract.call(null, elem)}) 
         
     | 
| 
      
 73 
     | 
    
         
            +
                      else
         
     | 
| 
      
 74 
     | 
    
         
            +
                        return extract.call(null, res) 
         
     | 
| 
      
 75 
     | 
    
         
            +
                    }) 
         
     | 
| 
      
 76 
     | 
    
         
            +
                  }
         
     | 
| 
       69 
77 
     | 
    
         
             
                }
         
     | 
| 
       70 
78 
     | 
    
         | 
| 
       71 
79 
     | 
    
         
             
                if (rule.value){
         
     | 
| 
         @@ -79,8 +87,15 @@ rbbt.plots.aes.get_properties = function(list, rules){ 
     | 
|
| 
       79 
87 
     | 
    
         
             
                  var property = rule.property
         
     | 
| 
       80 
88 
     | 
    
         
             
                  var args = rule.args
         
     | 
| 
       81 
89 
     | 
    
         
             
                  if (undefined === name) name = property
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
                   
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                  var deferred = m.deferred()
         
     | 
| 
      
 92 
     | 
    
         
            +
                  var tmp_promise = rbbt.entity_array.property(list.codes, list.type, list.info, property, args)
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                  if (extract){ tmp_promise = tmp_promise.then(function(res){ return res.map(extract)}) }
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                  tmp_promise.then(deferred.resolve, function(){ deferred.resolve(undefined)})
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                  promise = deferred.promise
         
     | 
| 
       84 
99 
     | 
    
         
             
                }
         
     | 
| 
       85 
100 
     | 
    
         | 
| 
       86 
101 
     | 
    
         
             
                if (rule.workflow){
         
     | 
| 
         @@ -163,7 +178,7 @@ rbbt.plots.aes.get_properties = function(list, rules){ 
     | 
|
| 
       163 
178 
     | 
    
         
             
                  }
         
     | 
| 
       164 
179 
     | 
    
         
             
                }
         
     | 
| 
       165 
180 
     | 
    
         | 
| 
       166 
     | 
    
         
            -
                promises.push(promise.then(function(res){list.properties[name] = res}))
         
     | 
| 
      
 181 
     | 
    
         
            +
                promises.push(promise.then(function(res){ if (undefined !== res) list.properties[name] = res}))
         
     | 
| 
       167 
182 
     | 
    
         
             
              })
         
     | 
| 
       168 
183 
     | 
    
         | 
| 
       169 
184 
     | 
    
         
             
              return m.sync(promises)
         
     | 
| 
         @@ -137,7 +137,7 @@ rbbt.plots.graph.view_cytoscape = function(graph_model, elem, style, layout, ext 
     | 
|
| 
       137 
137 
     | 
    
         
             
                var dataset = rbbt.plots.graph.build_cytoscape(updated_model)
         
     | 
| 
       138 
138 
     | 
    
         | 
| 
       139 
139 
     | 
    
         
             
                require_js(['/js/cytoscape/js/src/AC_OETags.js', '/js/cytoscape/js/src/cytoscapeweb.js', '/js/cytoscape'], function(){
         
     | 
| 
       140 
     | 
    
         
            -
                  var tool = $( 
     | 
| 
      
 140 
     | 
    
         
            +
                  var tool = $(elem).cytoscape_tool({
         
     | 
| 
       141 
141 
     | 
    
         
             
                    knowledge_base: 'user',
         
     | 
| 
       142 
142 
     | 
    
         
             
                    namespace: 'Hsa/feb2014',
         
     | 
| 
       143 
143 
     | 
    
         
             
                    entities: dataset.nodes,
         
     | 
| 
         @@ -159,7 +159,8 @@ rbbt.plots.graph.view_cytoscape = function(graph_model, elem, style, layout, ext 
     | 
|
| 
       159 
159 
     | 
    
         | 
| 
       160 
160 
     | 
    
         
             
                      var url = target.data.url;
         
     | 
| 
       161 
161 
     | 
    
         | 
| 
       162 
     | 
    
         
            -
                       
     | 
| 
      
 162 
     | 
    
         
            +
                      if (url)
         
     | 
| 
      
 163 
     | 
    
         
            +
                        rbbt.modal.controller.show_url(url)
         
     | 
| 
       163 
164 
     | 
    
         
             
                      return(false)
         
     | 
| 
       164 
165 
     | 
    
         
             
                    },
         
     | 
| 
       165 
166 
     | 
    
         | 
| 
         @@ -11,12 +11,14 @@ rbbt.plots.graph.get_entities = function(graph_model){ 
     | 
|
| 
       11 
11 
     | 
    
         
             
                source_entities.codes = unique(list.info.source)
         
     | 
| 
       12 
12 
     | 
    
         
             
                source_entities.info = list.source_info
         
     | 
| 
       13 
13 
     | 
    
         
             
                source_entities.type = list.source_type
         
     | 
| 
      
 14 
     | 
    
         
            +
                source_entities.format = list.source_format
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
16 
     | 
    
         
             
                var target_type = list.target_type
         
     | 
| 
       16 
17 
     | 
    
         
             
                var target_entities = {}
         
     | 
| 
       17 
18 
     | 
    
         
             
                target_entities.codes = unique(list.info.target)
         
     | 
| 
       18 
19 
     | 
    
         
             
                target_entities.info = list.target_info
         
     | 
| 
       19 
20 
     | 
    
         
             
                target_entities.type = list.target_type
         
     | 
| 
      
 21 
     | 
    
         
            +
                target_entities.format = list.target_format
         
     | 
| 
       20 
22 
     | 
    
         | 
| 
       21 
23 
     | 
    
         
             
                if (entities[source_entities.type])
         
     | 
| 
       22 
24 
     | 
    
         
             
                  entities[source_entities.type].codes = unique(entities[source_entities.type].codes.concat(source_entities.codes))
         
     | 
| 
         @@ -11,8 +11,14 @@ rbbt.plots.graph.prepare_associations = function(db, associations, info){ 
     | 
|
| 
       11 
11 
     | 
    
         
             
              var edges = {}
         
     | 
| 
       12 
12 
     | 
    
         
             
              edges.codes = []
         
     | 
| 
       13 
13 
     | 
    
         
             
              edges.database = db
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              edges. 
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              edges.source_type = info.source_type
         
     | 
| 
      
 16 
     | 
    
         
            +
              edges.target_type = info.target_type
         
     | 
| 
      
 17 
     | 
    
         
            +
              edges.source_format = info.source
         
     | 
| 
      
 18 
     | 
    
         
            +
              edges.target_format = info.target
         
     | 
| 
      
 19 
     | 
    
         
            +
              if (undefined === edges.source_type || null === edges.source_type) edges.source_type = edges.source_format
         
     | 
| 
      
 20 
     | 
    
         
            +
              if (undefined === edges.target_type || null === edges.target_type) edges.target_type = edges.target_format
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       16 
22 
     | 
    
         
             
              edges.source_info = info.source_entity_options
         
     | 
| 
       17 
23 
     | 
    
         
             
              edges.target_info = info.target_entity_options
         
     | 
| 
       18 
24 
     | 
    
         
             
              edges.info = {}
         
     | 
    
        data/share/views/wait.haml
    CHANGED
    
    | 
         @@ -1,32 +1,33 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            - @reload_page = true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            .wait
         
     | 
| 
       4 
     | 
    
         
            -
              % 
     | 
| 
      
 3 
     | 
    
         
            +
            .wait.ui.segment.info.message
         
     | 
| 
      
 4 
     | 
    
         
            +
              %h3.ui.header Waiting on #{format_name File.basename(job.name)}
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
              %span.status= job.status
         
     | 
| 
      
 6 
     | 
    
         
            +
              %span.ui.basic.segment.content.status= job.status
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
              - if job.file(:progress).exists?
         
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
       13 
     | 
    
         
            -
                    . 
     | 
| 
       14 
     | 
    
         
            -
                      . 
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                       
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  -  
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                    . 
     | 
| 
       23 
     | 
    
         
            -
                      . 
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                       
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                %hr
         
     | 
| 
      
 10 
     | 
    
         
            +
                .footer.ui.basic.segment
         
     | 
| 
      
 11 
     | 
    
         
            +
                  - progress = job.file(:progress).yaml
         
     | 
| 
      
 12 
     | 
    
         
            +
                  - if progress[:last_percent]
         
     | 
| 
      
 13 
     | 
    
         
            +
                    .ui.teal.step.percent.progress.indicating.meta(data-percent="#{progress[:last_percent]}" data-total=100)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      .bar
         
     | 
| 
      
 15 
     | 
    
         
            +
                        .progress
         
     | 
| 
      
 16 
     | 
    
         
            +
                      .label= progress[:desc]
         
     | 
| 
      
 17 
     | 
    
         
            +
                      :deferjs
         
     | 
| 
      
 18 
     | 
    
         
            +
                        $('.step.progress').progress()
         
     | 
| 
      
 19 
     | 
    
         
            +
                  - else
         
     | 
| 
      
 20 
     | 
    
         
            +
                    - ticks = progress[:ticks]
         
     | 
| 
      
 21 
     | 
    
         
            +
                    - max_ticks = ticks  * 1.2
         
     | 
| 
      
 22 
     | 
    
         
            +
                    .ui.teal.step.progress.meta(data-value=ticks data-total=max_ticks data-percent="#{ticks.to_f * 100.0 / max_ticks}")
         
     | 
| 
      
 23 
     | 
    
         
            +
                      .bar
         
     | 
| 
      
 24 
     | 
    
         
            +
                        .progress
         
     | 
| 
      
 25 
     | 
    
         
            +
                      .label= progress[:desc]
         
     | 
| 
      
 26 
     | 
    
         
            +
                      :deferjs
         
     | 
| 
      
 27 
     | 
    
         
            +
                        $('.step.progress').progress({label: 'ratio',text:{ratio: '{value}'}})
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
            .ui.segment
         
     | 
| 
      
 30 
     | 
    
         
            +
              %h3.ui.header Log
         
     | 
| 
       30 
31 
     | 
    
         
             
              %ul.step_messages.clean_list
         
     | 
| 
       31 
32 
     | 
    
         
             
                - job.messages.reverse.each do |line|
         
     | 
| 
       32 
33 
     | 
    
         
             
                  - next if line.nil? or line.strip.empty?
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rbbt-rest
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.8. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.8.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Miguel Vazquez
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016-03- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-03-30 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rake
         
     |