cloudfactory 0.6.1 → 0.6.2
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.
- data/CHANGELOG.md +3 -0
- data/lib/cf/cli/form.rb +41 -1
- data/lib/cf/custom_task_form.rb +18 -1
- data/lib/cf/station.rb +2 -0
- data/lib/cf/version.rb +1 -1
- data/spec/custom_task_form_spec.rb +97 -10
- metadata +52 -52
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/lib/cf/cli/form.rb
    CHANGED
    
    | @@ -36,7 +36,7 @@ end | |
| 36 36 |  | 
| 37 37 | 
             
            module Cf
         | 
| 38 38 | 
             
              class Form < Thor # :nodoc: all
         | 
| 39 | 
            -
                include Cf::Config | 
| 39 | 
            +
                include Cf::Config
         | 
| 40 40 |  | 
| 41 41 | 
             
                desc "form generate", "generates a custom task form at <line-title>/<form-title>.html and its associated css and js files"
         | 
| 42 42 | 
             
                method_option :station, :type => :numeric, :required => true, :desc => "the station index this form should be associated with"
         | 
| @@ -76,5 +76,45 @@ module Cf | |
| 76 76 | 
             
                    say "Generate the form for station 2 and then preview it.", :red
         | 
| 77 77 | 
             
                  end
         | 
| 78 78 | 
             
                end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                desc "form update", "Update the form from "
         | 
| 81 | 
            +
                method_option :station, :type => :numeric, :required => true, :aliases => "-s", :desc => "station index of the form to update"
         | 
| 82 | 
            +
                def update(form = nil)
         | 
| 83 | 
            +
                  station_index = options[:station]
         | 
| 84 | 
            +
                  line_destination = Dir.pwd
         | 
| 85 | 
            +
                  yaml_source = "#{line_destination}/line.yml"
         | 
| 86 | 
            +
                  unless File.exist?(yaml_source)
         | 
| 87 | 
            +
                    say("The current directory is not a valid line directory.", :red) and return
         | 
| 88 | 
            +
                  end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
             | 
| 91 | 
            +
                  set_target_uri(false)
         | 
| 92 | 
            +
                  set_api_key(yaml_source)
         | 
| 93 | 
            +
                  CF.account_name = CF::Account.info['name']
         | 
| 94 | 
            +
                  line_dump = YAML::load(File.read(yaml_source).strip)
         | 
| 95 | 
            +
                  line_title = line_dump['title'].parameterize
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                  station_hash = line_dump["stations"][station_index-1]["station"]
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                  say "Updating form for the station#{station_index}", :green
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                  if File.exist?("#{line_destination}/station#{station_index}.html")
         | 
| 102 | 
            +
                    form_content = station_hash["custom_task_form"]
         | 
| 103 | 
            +
                    form_content["html"] =  File.read("station#{station_index}.html")
         | 
| 104 | 
            +
                    resp = CF::CustomTaskForm.update(line_title, station_index, form_content)
         | 
| 105 | 
            +
                  elsif station_hash.has_key?("task_form")
         | 
| 106 | 
            +
                    say "No support for task form.", :red
         | 
| 107 | 
            +
                  else
         | 
| 108 | 
            +
                    say "No form exists for station #{station_index}", :red
         | 
| 109 | 
            +
                  end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                  exit(1) unless resp
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                  if resp.code == 200
         | 
| 114 | 
            +
                    say "Form updated sucessfully!", :green
         | 
| 115 | 
            +
                  else
         | 
| 116 | 
            +
                    say "Form can not be updated because #{resp["error"]["message"]}", :red
         | 
| 117 | 
            +
                  end
         | 
| 118 | 
            +
                end
         | 
| 79 119 | 
             
              end
         | 
| 80 120 | 
             
            end
         | 
    
        data/lib/cf/custom_task_form.rb
    CHANGED
    
    | @@ -48,7 +48,24 @@ module CF | |
| 48 48 | 
             
                def self.create(form)
         | 
| 49 49 | 
             
                  instruction = CustomTaskForm.new(form)
         | 
| 50 50 | 
             
                end
         | 
| 51 | 
            -
             | 
| 51 | 
            +
             | 
| 52 | 
            +
                # update the station form
         | 
| 53 | 
            +
                # form_content = {:form_title => "Enter text from a business card image", :instruction => "Describe", :html => html}
         | 
| 54 | 
            +
                #CF::CustomTaskForm.update(@line.title, station_index, form_content)
         | 
| 55 | 
            +
                def self.update(line_title, station_index, form_content)
         | 
| 56 | 
            +
                  form_content.stringify_keys!
         | 
| 57 | 
            +
                  request =
         | 
| 58 | 
            +
                  {
         | 
| 59 | 
            +
                    :body =>
         | 
| 60 | 
            +
                    {
         | 
| 61 | 
            +
                      :api_key => CF.api_key,
         | 
| 62 | 
            +
                      :form =>  {:title => form_content["form_title"], :instruction => form_content["instruction"], :_type => "CustomTaskForm", :raw_html => form_content["html"]},
         | 
| 63 | 
            +
                      :station_index => station_index
         | 
| 64 | 
            +
                    }
         | 
| 65 | 
            +
                  }
         | 
| 66 | 
            +
                  resp = HTTParty.put("#{CF.api_url}#{CF.api_version}/lines/#{CF.account_name}/#{line_title.downcase}/stations/#{station_index}/form.json", request)
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
             | 
| 52 69 | 
             
                def to_s # :nodoc:
         | 
| 53 70 | 
             
                  "{:title => #{self.title}, :instruction => #{self.instruction}, :raw_html => #{self.raw_html}, :errors => #{self.errors}}"
         | 
| 54 71 | 
             
                end
         | 
    
        data/lib/cf/station.rb
    CHANGED
    
    
    
        data/lib/cf/version.rb
    CHANGED
    
    
| @@ -79,19 +79,19 @@ describe CF::CustomTaskForm do | |
| 79 79 | 
             
                                </div>
         | 
| 80 80 | 
             
                              </div>
         | 
| 81 81 | 
             
                            </div></form></body></html>'
         | 
| 82 | 
            -
             | 
| 82 | 
            +
             | 
| 83 83 | 
             
                  title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
         | 
| 84 84 | 
             
                  sleep 1
         | 
| 85 85 | 
             
                  line = CF::Line.new(title, "Digitization")
         | 
| 86 | 
            -
             | 
| 86 | 
            +
             | 
| 87 87 | 
             
                  input_format_1 = CF::InputFormat.new({:name => "Name", :required => true, :valid_format => "general"})
         | 
| 88 88 | 
             
                  input_format_2 = CF::InputFormat.new({:name => "Contact", :required => true, :valid_type => "url"})
         | 
| 89 89 | 
             
                  line.input_formats input_format_1
         | 
| 90 90 | 
             
                  line.input_formats input_format_2
         | 
| 91 | 
            -
             | 
| 91 | 
            +
             | 
| 92 92 | 
             
                  station = CF::Station.new({:type => "work"})
         | 
| 93 93 | 
             
                  line.stations station
         | 
| 94 | 
            -
             | 
| 94 | 
            +
             | 
| 95 95 | 
             
                  worker = CF::HumanWorker.new({:number => 1, :reward => 20})
         | 
| 96 96 | 
             
                  line.stations.first.worker = worker
         | 
| 97 97 |  | 
| @@ -104,6 +104,93 @@ describe CF::CustomTaskForm do | |
| 104 104 | 
             
                end
         | 
| 105 105 | 
             
              end
         | 
| 106 106 |  | 
| 107 | 
            +
              context "update a custom task form" do
         | 
| 108 | 
            +
                before do
         | 
| 109 | 
            +
                  WebMock.allow_net_connect!
         | 
| 110 | 
            +
                  html =   '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html>\n<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></head><div id="form-content">
         | 
| 111 | 
            +
                              <body><form><div id="instructions">
         | 
| 112 | 
            +
                                <ul>
         | 
| 113 | 
            +
                                  <li>Look at the business card properly and fill in asked data.</li>
         | 
| 114 | 
            +
                                  <li>Make sure you enter everything found on business card.</li>
         | 
| 115 | 
            +
                                  <li>Work may be rejected if it is incomplete or mistakes are found.</li>
         | 
| 116 | 
            +
                                </ul>
         | 
| 117 | 
            +
                              </div>
         | 
| 118 | 
            +
                              <div id="image-field-wrapper">
         | 
| 119 | 
            +
                                <div id = "image-panel" >
         | 
| 120 | 
            +
                                  <img class="card-image" src="{{image_url}}">
         | 
| 121 | 
            +
                                </div>
         | 
| 122 | 
            +
                                <div id = "field-panel">
         | 
| 123 | 
            +
                                  Name<br />
         | 
| 124 | 
            +
                                  <input class="input-field first_name" type="text" name="output[first_name]" />
         | 
| 125 | 
            +
                                  <input class="input-field middle_name" type="text" name="output[middle_name]" />
         | 
| 126 | 
            +
                                  <input class="input-field last_name" type="text" name="output[last_name]" /><br />
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                                  <br />Contact<br />
         | 
| 129 | 
            +
                                  <input class="input-field email" type="text" name="output[email]" placeholder="Email"/>
         | 
| 130 | 
            +
                                  <input class="input-field phone" type="text" name="output[phone]" placeholder="Phone"/>
         | 
| 131 | 
            +
                                  <input class="input-field mobile" type="text" name="output[mobile]" placeholder="Mobile"/><br />
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                                </div>
         | 
| 134 | 
            +
                              </div>
         | 
| 135 | 
            +
                            </div></form></body></html>'
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                  title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
         | 
| 138 | 
            +
                  sleep 1
         | 
| 139 | 
            +
                  @line = CF::Line.create(title, "Digitization") do
         | 
| 140 | 
            +
                    CF::InputFormat.new({:line => self, :name => "Name", :required => true, :valid_format => "general"})
         | 
| 141 | 
            +
                    CF::InputFormat.new({:line => self, :name => "Contact", :required => true, :valid_type => "url"})
         | 
| 142 | 
            +
                    CF::Station.create({:line => self, :type => "work"}) do |s|
         | 
| 143 | 
            +
                      CF::HumanWorker.new({:station => s, :number => 1, :reward => 20})
         | 
| 144 | 
            +
                      CF::CustomTaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe", :raw_html => html})
         | 
| 145 | 
            +
                    end
         | 
| 146 | 
            +
                  end
         | 
| 147 | 
            +
             | 
| 148 | 
            +
             | 
| 149 | 
            +
                  @updated_html = '<!DOCTYPE html>
         | 
| 150 | 
            +
            <html>
         | 
| 151 | 
            +
            <head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></head>
         | 
| 152 | 
            +
            <body>
         | 
| 153 | 
            +
            <div id="form-content">
         | 
| 154 | 
            +
                  <form><div id="instructions">
         | 
| 155 | 
            +
                                <ul>
         | 
| 156 | 
            +
                                  <li>Look at the business card properly and fill in asked data.</li>
         | 
| 157 | 
            +
                                  <li>Make sure you enter everything found on business card.</li>
         | 
| 158 | 
            +
                                  <li>Work may be rejected if it is incomplete or mistakes are found.</li>
         | 
| 159 | 
            +
                                </ul>
         | 
| 160 | 
            +
                              </div>
         | 
| 161 | 
            +
                              <div id="image-field-wrapper">
         | 
| 162 | 
            +
                                <div id = "image-panel" >
         | 
| 163 | 
            +
                                  <img class="card-image" src="{{image_url}}">
         | 
| 164 | 
            +
                                </div>
         | 
| 165 | 
            +
                                <div id = "field-panel">
         | 
| 166 | 
            +
                                  FullName<br />
         | 
| 167 | 
            +
                                  <input class="input-field first_name" type="text" name="output[first_name]" />
         | 
| 168 | 
            +
                                  <input class="input-field middle_name" type="text" name="output[middle_name]" />
         | 
| 169 | 
            +
                                  <input class="input-field last_name" type="text" name="output[last_name]" /><br />
         | 
| 170 | 
            +
             | 
| 171 | 
            +
                                  <br />Contact<br />
         | 
| 172 | 
            +
                                  <input class="input-field email" type="text" name="output[email]" placeholder="Email"/>
         | 
| 173 | 
            +
                                  <input class="input-field phone" type="text" name="output[phone]" placeholder="Phone"/>
         | 
| 174 | 
            +
                                  <input class="input-field mobile" type="text" name="output[mobile]" placeholder="Mobile"/><br />
         | 
| 175 | 
            +
             | 
| 176 | 
            +
                                </div>
         | 
| 177 | 
            +
                              </div>
         | 
| 178 | 
            +
                            </div></form></body></html>'
         | 
| 179 | 
            +
             | 
| 180 | 
            +
                end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                it "should returtn sucsess for updating form without errors" do
         | 
| 183 | 
            +
                  form_content = {:form_title => "updated form", :instruction => "Updated one", :html => @updated_html}
         | 
| 184 | 
            +
                  form = CF::CustomTaskForm.update(@line.title, 1, form_content)
         | 
| 185 | 
            +
                  binding.pry
         | 
| 186 | 
            +
                  form.code.should eql(200)
         | 
| 187 | 
            +
                  form["title"].should eql("updated form")
         | 
| 188 | 
            +
                  CGI.unescape_html(form["raw_html"]).should eql("<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta http-equiv='\\\"Content-Type\\\"' content='\\\"text/html;' charset='UTF-8\\\"'>\n</head>\n<body>\n<div id=\"form-content\">\n      <form>\n<div id=\"instructions\">\n                    <ul>\n<li>Look at the business card properly and fill in asked data.</li>\n                      <li>Make sure you enter everything found on business card.</li>\n                      <li>Work may be rejected if it is incomplete or mistakes are found.</li>\n                    </ul>\n</div>\n                  <div id=\"image-field-wrapper\">\n                    <div id=\"image-panel\">\n                      <img class=\"card-image\" src=\"{{image_url}}\">\n</div>\n                    <div id=\"field-panel\">\n                      FullName<br><input class=\"input-field first_name\" type=\"text\" name=\"output[first_name]\"><input class=\"input-field middle_name\" type=\"text\" name=\"output[middle_name]\"><input class=\"input-field last_name\" type=\"text\" name=\"output[last_name]\"><br><br>Contact<br><input class=\"input-field email\" type=\"text\" name=\"output[email]\" placeholder=\"Email\"><input class=\"input-field phone\" type=\"text\" name=\"output[phone]\" placeholder=\"Phone\"><input class=\"input-field mobile\" type=\"text\" name=\"output[mobile]\" placeholder=\"Mobile\"><br>\n</div>\n                  </div>\n                </form>\n</div>\n</body>\n</html>\n")
         | 
| 189 | 
            +
                end
         | 
| 190 | 
            +
             | 
| 191 | 
            +
              end
         | 
| 192 | 
            +
             | 
| 193 | 
            +
             | 
| 107 194 | 
             
              context "create a Custom Task Form for Error Handling;" do
         | 
| 108 195 | 
             
                it "creating with invalid Html content" do
         | 
| 109 196 | 
             
                  WebMock.allow_net_connect!
         | 
| @@ -147,7 +234,7 @@ describe CF::CustomTaskForm do | |
| 147 234 | 
             
                  line.department_name.should eql("Digitization")
         | 
| 148 235 | 
             
                  line.stations.first.form.errors.should eql(["Raw html should contain a Form tag", "Raw html The name 'final_output[first_name]' is not valid, it should be of format output[name]", "Raw html The name 'final_output[middle_name]' is not valid, it should be of format output[name]", "Raw html The name 'final_output[last_name]' is not valid, it should be of format output[name]", "Raw html The name 'final_output[email]' is not valid, it should be of format output[name]", "Raw html The name 'final_output[phone]' is not valid, it should be of format output[name]", "Raw html The name 'final_output[mobile]' is not valid, it should be of format output[name]"])
         | 
| 149 236 | 
             
                end
         | 
| 150 | 
            -
             | 
| 237 | 
            +
             | 
| 151 238 | 
             
                it "creating without title" do
         | 
| 152 239 | 
             
                  WebMock.allow_net_connect!
         | 
| 153 240 | 
             
                  html =   '<div id="form-content">
         | 
| @@ -176,7 +263,7 @@ describe CF::CustomTaskForm do | |
| 176 263 | 
             
                                </div>
         | 
| 177 264 | 
             
                              </div>
         | 
| 178 265 | 
             
                            </div>'
         | 
| 179 | 
            -
             | 
| 266 | 
            +
             | 
| 180 267 | 
             
                  title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
         | 
| 181 268 | 
             
                  sleep 1
         | 
| 182 269 | 
             
                  line = CF::Line.create(title, "Digitization") do
         | 
| @@ -191,7 +278,7 @@ describe CF::CustomTaskForm do | |
| 191 278 | 
             
                  line.department_name.should eql("Digitization")
         | 
| 192 279 | 
             
                  line.stations.first.form.errors.should eql(["Title can't be blank", "Raw html should contain a Form tag"])
         | 
| 193 280 | 
             
                end
         | 
| 194 | 
            -
             | 
| 281 | 
            +
             | 
| 195 282 | 
             
                it "creating without instruction" do
         | 
| 196 283 | 
             
                  WebMock.allow_net_connect!
         | 
| 197 284 | 
             
                  html =   '<div id="form-content">
         | 
| @@ -220,7 +307,7 @@ describe CF::CustomTaskForm do | |
| 220 307 | 
             
                                </div>
         | 
| 221 308 | 
             
                              </div>
         | 
| 222 309 | 
             
                            </div>'
         | 
| 223 | 
            -
             | 
| 310 | 
            +
             | 
| 224 311 | 
             
                  title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
         | 
| 225 312 | 
             
                  sleep 1
         | 
| 226 313 | 
             
                  line = CF::Line.create(title, "Digitization") do
         | 
| @@ -235,7 +322,7 @@ describe CF::CustomTaskForm do | |
| 235 322 | 
             
                  line.department_name.should eql("Digitization")
         | 
| 236 323 | 
             
                  line.stations.first.form.errors.should eql(["Instruction can't be blank", "Raw html should contain a Form tag"])
         | 
| 237 324 | 
             
                end
         | 
| 238 | 
            -
             | 
| 325 | 
            +
             | 
| 239 326 | 
             
                it "creating without any html data" do
         | 
| 240 327 | 
             
                  WebMock.allow_net_connect!
         | 
| 241 328 | 
             
                  title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
         | 
| @@ -252,7 +339,7 @@ describe CF::CustomTaskForm do | |
| 252 339 | 
             
                  line.department_name.should eql("Digitization")
         | 
| 253 340 | 
             
                  line.stations.first.form.errors.should eql(["Raw html is required"])
         | 
| 254 341 | 
             
                end
         | 
| 255 | 
            -
             | 
| 342 | 
            +
             | 
| 256 343 | 
             
                it "creating without any html data in plain ruby way" do
         | 
| 257 344 | 
             
                  WebMock.allow_net_connect!
         | 
| 258 345 | 
             
                  title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cloudfactory
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.6. | 
| 4 | 
            +
              version: 0.6.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,11 +9,11 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-06- | 
| 12 | 
            +
            date: 2012-06-29 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: i18n
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &2152584240 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| @@ -21,10 +21,10 @@ dependencies: | |
| 21 21 | 
             
                    version: '0'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *2152584240
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: activesupport
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &2152593200 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ~>
         | 
| @@ -32,10 +32,10 @@ dependencies: | |
| 32 32 | 
             
                    version: '3.0'
         | 
| 33 33 | 
             
              type: :runtime
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *2152593200
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: hashie
         | 
| 38 | 
            -
              requirement: & | 
| 38 | 
            +
              requirement: &2152601100 !ruby/object:Gem::Requirement
         | 
| 39 39 | 
             
                none: false
         | 
| 40 40 | 
             
                requirements:
         | 
| 41 41 | 
             
                - - ~>
         | 
| @@ -43,10 +43,10 @@ dependencies: | |
| 43 43 | 
             
                    version: '1.0'
         | 
| 44 44 | 
             
              type: :runtime
         | 
| 45 45 | 
             
              prerelease: false
         | 
| 46 | 
            -
              version_requirements: * | 
| 46 | 
            +
              version_requirements: *2152601100
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: rest-client
         | 
| 49 | 
            -
              requirement: & | 
| 49 | 
            +
              requirement: &2152612160 !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
                none: false
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - ! '>='
         | 
| @@ -54,10 +54,10 @@ dependencies: | |
| 54 54 | 
             
                    version: '0'
         | 
| 55 55 | 
             
              type: :runtime
         | 
| 56 56 | 
             
              prerelease: false
         | 
| 57 | 
            -
              version_requirements: * | 
| 57 | 
            +
              version_requirements: *2152612160
         | 
| 58 58 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 59 | 
             
              name: json
         | 
| 60 | 
            -
              requirement: & | 
| 60 | 
            +
              requirement: &2152609340 !ruby/object:Gem::Requirement
         | 
| 61 61 | 
             
                none: false
         | 
| 62 62 | 
             
                requirements:
         | 
| 63 63 | 
             
                - - ! '>='
         | 
| @@ -65,10 +65,10 @@ dependencies: | |
| 65 65 | 
             
                    version: '0'
         | 
| 66 66 | 
             
              type: :runtime
         | 
| 67 67 | 
             
              prerelease: false
         | 
| 68 | 
            -
              version_requirements: * | 
| 68 | 
            +
              version_requirements: *2152609340
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: thor
         | 
| 71 | 
            -
              requirement: & | 
| 71 | 
            +
              requirement: &2152607040 !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                none: false
         | 
| 73 73 | 
             
                requirements:
         | 
| 74 74 | 
             
                - - ~>
         | 
| @@ -76,10 +76,10 @@ dependencies: | |
| 76 76 | 
             
                    version: '0.14'
         | 
| 77 77 | 
             
              type: :runtime
         | 
| 78 78 | 
             
              prerelease: false
         | 
| 79 | 
            -
              version_requirements: * | 
| 79 | 
            +
              version_requirements: *2152607040
         | 
| 80 80 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 81 81 | 
             
              name: highline
         | 
| 82 | 
            -
              requirement: & | 
| 82 | 
            +
              requirement: &2152617120 !ruby/object:Gem::Requirement
         | 
| 83 83 | 
             
                none: false
         | 
| 84 84 | 
             
                requirements:
         | 
| 85 85 | 
             
                - - ! '>='
         | 
| @@ -87,10 +87,10 @@ dependencies: | |
| 87 87 | 
             
                    version: '0'
         | 
| 88 88 | 
             
              type: :runtime
         | 
| 89 89 | 
             
              prerelease: false
         | 
| 90 | 
            -
              version_requirements: * | 
| 90 | 
            +
              version_requirements: *2152617120
         | 
| 91 91 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 92 92 | 
             
              name: httparty
         | 
| 93 | 
            -
              requirement: & | 
| 93 | 
            +
              requirement: &2152637820 !ruby/object:Gem::Requirement
         | 
| 94 94 | 
             
                none: false
         | 
| 95 95 | 
             
                requirements:
         | 
| 96 96 | 
             
                - - ~>
         | 
| @@ -98,10 +98,10 @@ dependencies: | |
| 98 98 | 
             
                    version: '0.7'
         | 
| 99 99 | 
             
              type: :runtime
         | 
| 100 100 | 
             
              prerelease: false
         | 
| 101 | 
            -
              version_requirements: * | 
| 101 | 
            +
              version_requirements: *2152637820
         | 
| 102 102 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 103 103 | 
             
              name: terminal-table
         | 
| 104 | 
            -
              requirement: & | 
| 104 | 
            +
              requirement: &2152635700 !ruby/object:Gem::Requirement
         | 
| 105 105 | 
             
                none: false
         | 
| 106 106 | 
             
                requirements:
         | 
| 107 107 | 
             
                - - ~>
         | 
| @@ -109,10 +109,10 @@ dependencies: | |
| 109 109 | 
             
                    version: '1.4'
         | 
| 110 110 | 
             
              type: :runtime
         | 
| 111 111 | 
             
              prerelease: false
         | 
| 112 | 
            -
              version_requirements: * | 
| 112 | 
            +
              version_requirements: *2152635700
         | 
| 113 113 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 114 114 | 
             
              name: millisami-csv-hash
         | 
| 115 | 
            -
              requirement: & | 
| 115 | 
            +
              requirement: &2152632900 !ruby/object:Gem::Requirement
         | 
| 116 116 | 
             
                none: false
         | 
| 117 117 | 
             
                requirements:
         | 
| 118 118 | 
             
                - - ! '>='
         | 
| @@ -120,10 +120,10 @@ dependencies: | |
| 120 120 | 
             
                    version: '0'
         | 
| 121 121 | 
             
              type: :runtime
         | 
| 122 122 | 
             
              prerelease: false
         | 
| 123 | 
            -
              version_requirements: * | 
| 123 | 
            +
              version_requirements: *2152632900
         | 
| 124 124 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 125 125 | 
             
              name: awesome_print
         | 
| 126 | 
            -
              requirement: & | 
| 126 | 
            +
              requirement: &2152645560 !ruby/object:Gem::Requirement
         | 
| 127 127 | 
             
                none: false
         | 
| 128 128 | 
             
                requirements:
         | 
| 129 129 | 
             
                - - ! '>='
         | 
| @@ -131,10 +131,10 @@ dependencies: | |
| 131 131 | 
             
                    version: '0'
         | 
| 132 132 | 
             
              type: :runtime
         | 
| 133 133 | 
             
              prerelease: false
         | 
| 134 | 
            -
              version_requirements: * | 
| 134 | 
            +
              version_requirements: *2152645560
         | 
| 135 135 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 136 136 | 
             
              name: rubyzip
         | 
| 137 | 
            -
              requirement: & | 
| 137 | 
            +
              requirement: &2152642420 !ruby/object:Gem::Requirement
         | 
| 138 138 | 
             
                none: false
         | 
| 139 139 | 
             
                requirements:
         | 
| 140 140 | 
             
                - - ! '>='
         | 
| @@ -142,10 +142,10 @@ dependencies: | |
| 142 142 | 
             
                    version: '0'
         | 
| 143 143 | 
             
              type: :runtime
         | 
| 144 144 | 
             
              prerelease: false
         | 
| 145 | 
            -
              version_requirements: * | 
| 145 | 
            +
              version_requirements: *2152642420
         | 
| 146 146 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 147 147 | 
             
              name: pry
         | 
| 148 | 
            -
              requirement: & | 
| 148 | 
            +
              requirement: &2152654420 !ruby/object:Gem::Requirement
         | 
| 149 149 | 
             
                none: false
         | 
| 150 150 | 
             
                requirements:
         | 
| 151 151 | 
             
                - - ! '>='
         | 
| @@ -153,10 +153,10 @@ dependencies: | |
| 153 153 | 
             
                    version: '0'
         | 
| 154 154 | 
             
              type: :development
         | 
| 155 155 | 
             
              prerelease: false
         | 
| 156 | 
            -
              version_requirements: * | 
| 156 | 
            +
              version_requirements: *2152654420
         | 
| 157 157 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 158 158 | 
             
              name: pry-nav
         | 
| 159 | 
            -
              requirement: & | 
| 159 | 
            +
              requirement: &2152653240 !ruby/object:Gem::Requirement
         | 
| 160 160 | 
             
                none: false
         | 
| 161 161 | 
             
                requirements:
         | 
| 162 162 | 
             
                - - ! '>='
         | 
| @@ -164,10 +164,10 @@ dependencies: | |
| 164 164 | 
             
                    version: '0'
         | 
| 165 165 | 
             
              type: :development
         | 
| 166 166 | 
             
              prerelease: false
         | 
| 167 | 
            -
              version_requirements: * | 
| 167 | 
            +
              version_requirements: *2152653240
         | 
| 168 168 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 169 169 | 
             
              name: aruba
         | 
| 170 | 
            -
              requirement: & | 
| 170 | 
            +
              requirement: &2152651520 !ruby/object:Gem::Requirement
         | 
| 171 171 | 
             
                none: false
         | 
| 172 172 | 
             
                requirements:
         | 
| 173 173 | 
             
                - - ! '>='
         | 
| @@ -175,10 +175,10 @@ dependencies: | |
| 175 175 | 
             
                    version: '0'
         | 
| 176 176 | 
             
              type: :development
         | 
| 177 177 | 
             
              prerelease: false
         | 
| 178 | 
            -
              version_requirements: * | 
| 178 | 
            +
              version_requirements: *2152651520
         | 
| 179 179 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 180 180 | 
             
              name: rails
         | 
| 181 | 
            -
              requirement: & | 
| 181 | 
            +
              requirement: &2152647900 !ruby/object:Gem::Requirement
         | 
| 182 182 | 
             
                none: false
         | 
| 183 183 | 
             
                requirements:
         | 
| 184 184 | 
             
                - - ~>
         | 
| @@ -186,10 +186,10 @@ dependencies: | |
| 186 186 | 
             
                    version: 3.0.3
         | 
| 187 187 | 
             
              type: :development
         | 
| 188 188 | 
             
              prerelease: false
         | 
| 189 | 
            -
              version_requirements: * | 
| 189 | 
            +
              version_requirements: *2152647900
         | 
| 190 190 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 191 191 | 
             
              name: bundler
         | 
| 192 | 
            -
              requirement: & | 
| 192 | 
            +
              requirement: &2152662600 !ruby/object:Gem::Requirement
         | 
| 193 193 | 
             
                none: false
         | 
| 194 194 | 
             
                requirements:
         | 
| 195 195 | 
             
                - - ! '>='
         | 
| @@ -197,10 +197,10 @@ dependencies: | |
| 197 197 | 
             
                    version: '0'
         | 
| 198 198 | 
             
              type: :development
         | 
| 199 199 | 
             
              prerelease: false
         | 
| 200 | 
            -
              version_requirements: * | 
| 200 | 
            +
              version_requirements: *2152662600
         | 
| 201 201 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 202 202 | 
             
              name: generator_spec
         | 
| 203 | 
            -
              requirement: & | 
| 203 | 
            +
              requirement: &2152666960 !ruby/object:Gem::Requirement
         | 
| 204 204 | 
             
                none: false
         | 
| 205 205 | 
             
                requirements:
         | 
| 206 206 | 
             
                - - ~>
         | 
| @@ -208,10 +208,10 @@ dependencies: | |
| 208 208 | 
             
                    version: '0.8'
         | 
| 209 209 | 
             
              type: :development
         | 
| 210 210 | 
             
              prerelease: false
         | 
| 211 | 
            -
              version_requirements: * | 
| 211 | 
            +
              version_requirements: *2152666960
         | 
| 212 212 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 213 213 | 
             
              name: rspec
         | 
| 214 | 
            -
              requirement: & | 
| 214 | 
            +
              requirement: &2152664700 !ruby/object:Gem::Requirement
         | 
| 215 215 | 
             
                none: false
         | 
| 216 216 | 
             
                requirements:
         | 
| 217 217 | 
             
                - - ! '>='
         | 
| @@ -219,10 +219,10 @@ dependencies: | |
| 219 219 | 
             
                    version: '0'
         | 
| 220 220 | 
             
              type: :development
         | 
| 221 221 | 
             
              prerelease: false
         | 
| 222 | 
            -
              version_requirements: * | 
| 222 | 
            +
              version_requirements: *2152664700
         | 
| 223 223 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 224 224 | 
             
              name: cucumber
         | 
| 225 | 
            -
              requirement: & | 
| 225 | 
            +
              requirement: &2152678000 !ruby/object:Gem::Requirement
         | 
| 226 226 | 
             
                none: false
         | 
| 227 227 | 
             
                requirements:
         | 
| 228 228 | 
             
                - - ! '>='
         | 
| @@ -230,10 +230,10 @@ dependencies: | |
| 230 230 | 
             
                    version: '0'
         | 
| 231 231 | 
             
              type: :development
         | 
| 232 232 | 
             
              prerelease: false
         | 
| 233 | 
            -
              version_requirements: * | 
| 233 | 
            +
              version_requirements: *2152678000
         | 
| 234 234 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 235 235 | 
             
              name: rdoc
         | 
| 236 | 
            -
              requirement: & | 
| 236 | 
            +
              requirement: &2152675940 !ruby/object:Gem::Requirement
         | 
| 237 237 | 
             
                none: false
         | 
| 238 238 | 
             
                requirements:
         | 
| 239 239 | 
             
                - - ~>
         | 
| @@ -241,10 +241,10 @@ dependencies: | |
| 241 241 | 
             
                    version: 3.5.3
         | 
| 242 242 | 
             
              type: :development
         | 
| 243 243 | 
             
              prerelease: false
         | 
| 244 | 
            -
              version_requirements: * | 
| 244 | 
            +
              version_requirements: *2152675940
         | 
| 245 245 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 246 246 | 
             
              name: vcr
         | 
| 247 | 
            -
              requirement: & | 
| 247 | 
            +
              requirement: &2152673580 !ruby/object:Gem::Requirement
         | 
| 248 248 | 
             
                none: false
         | 
| 249 249 | 
             
                requirements:
         | 
| 250 250 | 
             
                - - ! '>='
         | 
| @@ -252,10 +252,10 @@ dependencies: | |
| 252 252 | 
             
                    version: '0'
         | 
| 253 253 | 
             
              type: :development
         | 
| 254 254 | 
             
              prerelease: false
         | 
| 255 | 
            -
              version_requirements: * | 
| 255 | 
            +
              version_requirements: *2152673580
         | 
| 256 256 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 257 257 | 
             
              name: rake
         | 
| 258 | 
            -
              requirement: & | 
| 258 | 
            +
              requirement: &2152671360 !ruby/object:Gem::Requirement
         | 
| 259 259 | 
             
                none: false
         | 
| 260 260 | 
             
                requirements:
         | 
| 261 261 | 
             
                - - ! '>='
         | 
| @@ -263,10 +263,10 @@ dependencies: | |
| 263 263 | 
             
                    version: '0'
         | 
| 264 264 | 
             
              type: :development
         | 
| 265 265 | 
             
              prerelease: false
         | 
| 266 | 
            -
              version_requirements: * | 
| 266 | 
            +
              version_requirements: *2152671360
         | 
| 267 267 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 268 268 | 
             
              name: webmock
         | 
| 269 | 
            -
              requirement: & | 
| 269 | 
            +
              requirement: &2152683680 !ruby/object:Gem::Requirement
         | 
| 270 270 | 
             
                none: false
         | 
| 271 271 | 
             
                requirements:
         | 
| 272 272 | 
             
                - - ! '>='
         | 
| @@ -274,10 +274,10 @@ dependencies: | |
| 274 274 | 
             
                    version: '0'
         | 
| 275 275 | 
             
              type: :development
         | 
| 276 276 | 
             
              prerelease: false
         | 
| 277 | 
            -
              version_requirements: * | 
| 277 | 
            +
              version_requirements: *2152683680
         | 
| 278 278 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 279 279 | 
             
              name: timecop
         | 
| 280 | 
            -
              requirement: & | 
| 280 | 
            +
              requirement: &2152681300 !ruby/object:Gem::Requirement
         | 
| 281 281 | 
             
                none: false
         | 
| 282 282 | 
             
                requirements:
         | 
| 283 283 | 
             
                - - ! '>='
         | 
| @@ -285,7 +285,7 @@ dependencies: | |
| 285 285 | 
             
                    version: '0'
         | 
| 286 286 | 
             
              type: :development
         | 
| 287 287 | 
             
              prerelease: false
         | 
| 288 | 
            -
              version_requirements: * | 
| 288 | 
            +
              version_requirements: *2152681300
         | 
| 289 289 | 
             
            description: A Ruby wrapper and CLI for to interact with Cloudfactory.com REST API
         | 
| 290 290 | 
             
            email:
         | 
| 291 291 | 
             
            - administrator@sprout-technology.com
         |