cloudfactory 0.4.4 → 0.4.5
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 +7 -0
- data/lib/cf.rb +4 -1
- data/lib/cf/badge.rb +59 -0
- data/lib/cf/cli.rb +6 -0
- data/lib/cf/cli/line.rb +185 -132
- data/lib/cf/cli/line_yaml_validator.rb +7 -30
- data/lib/cf/cli/production.rb +63 -9
- data/lib/cf/gold_standard.rb +74 -0
- data/lib/cf/help.txt +67 -0
- data/lib/cf/human_worker.rb +45 -49
- data/lib/cf/line.rb +51 -1
- data/lib/cf/run.rb +10 -10
- data/lib/cf/station.rb +111 -29
- data/lib/cf/test_run.rb +66 -0
- data/lib/cf/version.rb +1 -1
- data/spec/account_spec.rb +1 -1
- data/spec/badges/station_1.html +135 -0
- data/spec/badges_spec.rb +288 -0
- data/spec/gold_standard_spec.rb +179 -0
- data/spec/gold_standards.csv +2 -0
- data/spec/google_translate_robot_spec.rb +1 -1
- data/spec/human_worker_spec.rb +1 -65
- data/spec/line_spec.rb +6 -39
- data/spec/robot_worker_spec.rb +1 -1
- data/spec/run_spec.rb +9 -7
- data/spec/stat_badge_spec.rb +45 -0
- data/spec/test_run_spec.rb +105 -0
- metadata +264 -218
- data/spec/badge_spec.rb +0 -88
@@ -36,7 +36,7 @@ module CF
|
|
36
36
|
sleep 1
|
37
37
|
line = CF::Line.create(title,"Digitization") do |l|
|
38
38
|
CF::InputFormat.new({:line => l, :name => "text", :required => true})
|
39
|
-
CF::Station.create({:line => l, :type => "
|
39
|
+
CF::Station.create({:line => l, :type => "robot"}) do |s|
|
40
40
|
CF::RobotWorker.create({:station => s, :type => "google_translate_robot", :settings => {:data => ["{{text}}"], :from => "en", :to => "es"}})
|
41
41
|
end
|
42
42
|
end
|
data/spec/human_worker_spec.rb
CHANGED
@@ -60,71 +60,7 @@ module CF
|
|
60
60
|
CF::HumanWorker.new({:station => station, :number => 1, :reward => 20})
|
61
61
|
end
|
62
62
|
end
|
63
|
-
line.stations.first.worker.to_s.should eql("{:id => => #{line.stations.first.worker.id}, :number => 1, :reward => 20, :stat_badge => {\"approval_rating\"=>80, \"assignment_duration\"=>3600, \"abandonment_rate\"=>30, \"country\"=>nil},
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context "create a worker with skill_badge and skill_test" do
|
68
|
-
it "the Block DSL way" do
|
69
|
-
WebMock.allow_net_connect!
|
70
|
-
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
71
|
-
sleep 1
|
72
|
-
badge =
|
73
|
-
{
|
74
|
-
:title => 'Football Fanatic',
|
75
|
-
:description => "This qualification allows you to perform work at stations which have this badge.",
|
76
|
-
:max_badges => 3,
|
77
|
-
:test =>
|
78
|
-
{
|
79
|
-
:input => {:name => "Lionel Andres Messi", :country => "Argentina"},
|
80
|
-
:expected_output =>
|
81
|
-
[{:birthplace => "Rosario, Santa Fe, Argentina",:match_options => {:tolerance => 10, :ignore_case => true }},{:position => "CF",:match_options => {:tolerance => 1 }},{:"current-club" => "Barcelona",:match_options => {:tolerance => 1, :ignore_case => false }}]
|
82
|
-
}
|
83
|
-
}
|
84
|
-
line = CF::Line.create(title, "Digitization") do |l|
|
85
|
-
CF::InputFormat.new({:line => l, :name => "image_url", :required => true, :valid_type => "url"})
|
86
|
-
CF::Station.create({:line =>l, :type => "work"}) do |s|
|
87
|
-
@worker = CF::HumanWorker.new({:station => s, :number => 1, :reward => 20, :skill_badge => badge})
|
88
|
-
end
|
89
|
-
end
|
90
|
-
line.stations.first.type.should eql("WorkStation")
|
91
|
-
line.stations.first.worker.number.should eql(1)
|
92
|
-
line.stations.first.worker.reward.should eql(20)
|
93
|
-
line.stations.first.worker.skill_badges.first.should eql([{"title"=>"Football Fanatic", "description"=>"This qualification allows you to perform work at stations which have this badge.", "score"=>nil, "quality_rating"=>nil, "max_badges"=>3, "skill_test"=>{"score_after"=>"submit", "manual_scoring"=>false, "display_answers"=>false, "edit_answers"=>true, "retries"=>0, "pass_percentage"=>100, "test_units"=>[{"input"=>{"name"=>"Lionel Andres Messi", "country"=>"Argentina"}, "expected_output"=>[{"birthplace"=>"Rosario, Santa Fe, Argentina", "match_options"=>{"tolerance"=>"1", "ignore_case"=>"false"}, "position"=>"CF", "current-club"=>"Barcelona"}], "match_options"=>{"tolerance"=>0, "ignore_case"=>false}}]}}])
|
94
|
-
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>80, "assignment_duration"=>3600, "abandonment_rate"=>30, "country"=>nil})
|
95
|
-
end
|
96
|
-
|
97
|
-
it "in plain ruby way" do
|
98
|
-
WebMock.allow_net_connect!
|
99
|
-
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
100
|
-
sleep 1
|
101
|
-
skill_badge =
|
102
|
-
{
|
103
|
-
:title => 'Football Fanatic',
|
104
|
-
:description => "This qualification allows you to perform work at stations which have this badge.",
|
105
|
-
:max_badges => 3,
|
106
|
-
:test =>
|
107
|
-
{
|
108
|
-
:input => {:name => "Lionel Andres Messi", :country => "Argentina"},
|
109
|
-
:expected_output =>
|
110
|
-
[{:birthplace => "Rosario, Santa Fe, Argentina",:match_options => {:tolerance => 10, :ignore_case => true }},{:position => "CF",:match_options => {:tolerance => 1 }},{:"current-club" => "Barcelona",:match_options => {:tolerance => 1, :ignore_case => false }}]
|
111
|
-
}
|
112
|
-
}
|
113
|
-
line = CF::Line.new(title, "Digitization")
|
114
|
-
input_format = CF::InputFormat.new({:name => "image_url", :required => true, :valid_type => "url"})
|
115
|
-
line.input_formats input_format
|
116
|
-
|
117
|
-
station = CF::Station.new({:type => "work"})
|
118
|
-
line.stations station
|
119
|
-
|
120
|
-
worker = CF::HumanWorker.new({:number => 1, :reward => 20, :skill_badge => skill_badge})
|
121
|
-
line.stations.first.worker = worker
|
122
|
-
|
123
|
-
line.stations.first.type.should eql("WorkStation")
|
124
|
-
line.stations.first.worker.number.should eql(1)
|
125
|
-
line.stations.first.worker.reward.should eql(20)
|
126
|
-
line.stations.first.worker.skill_badges.first.should eql([{"title"=>"Football Fanatic", "description"=>"This qualification allows you to perform work at stations which have this badge.", "score"=>nil, "quality_rating"=>nil, "max_badges"=>3, "skill_test"=>{"score_after"=>"submit", "manual_scoring"=>false, "display_answers"=>false, "edit_answers"=>true, "retries"=>0, "pass_percentage"=>100, "test_units"=>[{"input"=>{"name"=>"Lionel Andres Messi", "country"=>"Argentina"}, "expected_output"=>[{"birthplace"=>"Rosario, Santa Fe, Argentina", "match_options"=>{"tolerance"=>"1", "ignore_case"=>"false"}, "position"=>"CF", "current-club"=>"Barcelona"}], "match_options"=>{"tolerance"=>0, "ignore_case"=>false}}]}}])
|
127
|
-
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>80, "assignment_duration"=>3600, "abandonment_rate"=>30, "country"=>nil})
|
63
|
+
line.stations.first.worker.to_s.should eql("{:id => => #{line.stations.first.worker.id}, :number => 1, :reward => 20, :stat_badge => {\"approval_rating\"=>80, \"assignment_duration\"=>3600, \"abandonment_rate\"=>30, \"country\"=>nil}, :errors => }")
|
128
64
|
end
|
129
65
|
end
|
130
66
|
end
|
data/spec/line_spec.rb
CHANGED
@@ -20,7 +20,7 @@ describe CF::Line do
|
|
20
20
|
line = CF::Line.create(title,"Digitization") do |l|
|
21
21
|
CF::InputFormat.new({:line => l, :name => "image_url", :required => true, :valid_type => "url"})
|
22
22
|
CF::InputFormat.new({:line => l, :name => "image", :required => true, :valid_type => "url"})
|
23
|
-
CF::Station.new({:line => l, :type => "work"})
|
23
|
+
CF::Station.new({:line => l, :type => "work"})
|
24
24
|
end
|
25
25
|
line.title.should eq(title)
|
26
26
|
line.department_name.should eq("Digitization")
|
@@ -338,7 +338,7 @@ describe CF::Line do
|
|
338
338
|
|
339
339
|
run = CF::Run.create(line, "run-#{title}", File.expand_path("../../fixtures/input_data/test.csv", __FILE__))
|
340
340
|
delete = CF::Line.destroy(title)
|
341
|
-
delete['error']['message'].should eql("Cannot delete line. You have production runs using this line. Pass force option to enforce deletion.")
|
341
|
+
delete['error']['message'].should eql("Could not be deleted! Cannot delete line. You have production runs using this line. Pass force option to enforce deletion.")
|
342
342
|
delete['code'].should_not eql(200)
|
343
343
|
|
344
344
|
forced_delete = CF::Line.destroy(title, :forced => true)
|
@@ -367,7 +367,7 @@ describe CF::Line do
|
|
367
367
|
worker_id = line_details['stations'].first['worker']['id']
|
368
368
|
form_field_id = line_details['stations'].first['form_fields'].first['id']
|
369
369
|
station_input_format_id = line_details['stations'].first['input_formats'].first['id']
|
370
|
-
line_details.should eql({"title"=>"#{title}", "description"=>"", "department"=>"Digitization", "
|
370
|
+
line_details.should eql({"title"=>"#{title}", "description"=>"", "department"=>"Digitization", "input_formats"=>[{"id"=>"#{line_input_format_id}", "name"=>"Company", "required"=>true, "valid_type"=>nil}], "stations"=>[{"index"=>1, "type"=>"WorkStation", "input_formats"=>[{"id"=>"#{station_input_format_id}", "name"=>"Company", "required"=>true, "valid_type"=>nil}], "worker"=>{"id"=>"#{worker_id}", "number"=>1, "reward"=>20, "type"=>"HumanWorker", "stat_badge"=>{"abandonment_rate"=>30, "approval_rating"=>80, "country"=>nil, "adult"=>nil}}, "form"=>{"title"=>"Enter text from a business card image", "instruction"=>"Describe"}, "form_fields"=>[{"id"=>"#{form_field_id}", "label"=>"First Name", "field_type"=>"short_answer", "hint"=>nil, "required"=>true, "unique"=>nil, "hide_label"=>nil, "value"=>nil, "option_values"=>nil}]}], "code"=>200})
|
371
371
|
end
|
372
372
|
|
373
373
|
it "for robot worker" do
|
@@ -376,7 +376,7 @@ describe CF::Line do
|
|
376
376
|
sleep 1
|
377
377
|
line = CF::Line.create(title,"Digitization") do |l|
|
378
378
|
CF::InputFormat.new({:line => l, :name => "text", :required => "true"})
|
379
|
-
CF::Station.create({:line => l, :type => "
|
379
|
+
CF::Station.create({:line => l, :type => "robot"}) do |s|
|
380
380
|
CF::RobotWorker.create({:station => s, :type => "entity_extraction_robot", :settings => {:document => ["Franz Kafka and George Orwell are authors. Ludwig Von Beethoven and Mozart are musicians. China and Japan are countries"]}})
|
381
381
|
end
|
382
382
|
end
|
@@ -384,40 +384,7 @@ describe CF::Line do
|
|
384
384
|
line_input_format_id = line_details['input_formats'].first['id']
|
385
385
|
station_input_format_id = line_details['stations'].first['input_formats'].first['id']
|
386
386
|
worker_id = line_details['stations'].first['worker']['id']
|
387
|
-
line_details.should eql({"title"=>"#{title}", "description"=>"", "department"=>"Digitization", "code"=>200, "input_formats"=>[{"id"=>"#{line_input_format_id}", "name"=>"text", "required"=>true, "valid_type"=>nil}], "stations"=>[{"index"=>1, "type"=>"
|
388
|
-
end
|
389
|
-
|
390
|
-
it "with skill test feature" do
|
391
|
-
WebMock.allow_net_connect!
|
392
|
-
badge =
|
393
|
-
{
|
394
|
-
:title => 'Football Fanatic',
|
395
|
-
:description => "This qualification allows you to perform work at stations which have this badge.",
|
396
|
-
:max_badges => 3,
|
397
|
-
:test =>
|
398
|
-
{
|
399
|
-
:input => {:name => "Lionel Andres Messi", :country => "Argentina"},
|
400
|
-
:expected_output =>
|
401
|
-
[{:birthplace => "Rosario, Santa Fe, Argentina",:match_options => {:tolerance => 10, :ignore_case => true }},{:position => "CF",:match_options => {:tolerance => 1 }},{:"current-club" => "Barcelona",:match_options => {:tolerance => 1, :ignore_case => false }}]
|
402
|
-
}
|
403
|
-
}
|
404
|
-
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
405
|
-
sleep 2
|
406
|
-
line = CF::Line.create(title, "Digitization") do |l|
|
407
|
-
CF::InputFormat.new({:line => l, :name => "image_url", :required => true, :valid_type => "url"})
|
408
|
-
CF::Station.create({:line =>l, :type => "work"}) do |s|
|
409
|
-
CF::HumanWorker.new({:station => s, :number => 1, :reward => 20, :skill_badge => badge})
|
410
|
-
CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
|
411
|
-
CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
|
412
|
-
end
|
413
|
-
end
|
414
|
-
end
|
415
|
-
line_details = CF::Line.inspect(title)
|
416
|
-
line_input_format_id = line_details['input_formats'].first['id']
|
417
|
-
station_input_format_id = line_details['stations'].first['input_formats'].first['id']
|
418
|
-
form_field_id = line_details['stations'].first['form_fields'].first['id']
|
419
|
-
worker_id = line_details['stations'].first['worker']['id']
|
420
|
-
line_details.should eql({"title"=>"#{title}", "description"=>"", "department"=>"Digitization", "code"=>200, "input_formats"=>[{"id"=>"#{line_input_format_id}", "name"=>"image_url", "required"=>true, "valid_type"=>"url"}], "stations"=>[{"index"=>1, "type"=>"WorkStation", "worker"=>{"id"=>"#{worker_id}", "number"=>1, "reward"=>20, "type"=>"HumanWorker", "stat_badge"=>{"abandonment_rate"=>30, "approval_rating"=>80, "country"=>nil, "adult"=>nil}, "skill_badge"=>nil}, "form"=>{"title"=>"Enter text from a business card image", "instruction"=>"Describe"}, "form_fields"=>[{"id"=>"#{form_field_id}", "label"=>"First Name", "field_type"=>"short_answer", "hint"=>nil, "required"=>true, "unique"=>nil, "hide_label"=>nil, "value"=>nil}], "input_formats"=>[{"id"=>"#{station_input_format_id}", "name"=>"image_url", "required"=>true, "valid_type"=>"url"}]}]})
|
387
|
+
line_details.should eql({"title"=>"#{title}", "description"=>"", "department"=>"Digitization", "code"=>200, "input_formats"=>[{"id"=>"#{line_input_format_id}", "name"=>"text", "required"=>true, "valid_type"=>nil}], "stations"=>[{"index"=>1, "type"=>"RobotStation", "worker"=>{"id"=>"#{worker_id}", "number"=>1, "reward"=>0.5, "type"=>"EntityExtractionRobot"}, "input_formats"=>[{"id"=>"#{station_input_format_id}", "name"=>"text", "required"=>true, "valid_type"=>nil}]}]})
|
421
388
|
end
|
422
389
|
|
423
390
|
it "should get all lines with pagination" do
|
@@ -443,7 +410,7 @@ describe CF::Line do
|
|
443
410
|
it "as public line" do
|
444
411
|
WebMock.allow_net_connect!
|
445
412
|
CF.configure do |config|
|
446
|
-
config.api_key = "
|
413
|
+
config.api_key = "2512bb347f0cfa42c3ce24947d820a5d82d445a7"
|
447
414
|
config.account_name = "hero"
|
448
415
|
end
|
449
416
|
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
data/spec/robot_worker_spec.rb
CHANGED
@@ -8,7 +8,7 @@ describe CF::RobotWorker do
|
|
8
8
|
sleep 1
|
9
9
|
line = CF::Line.create(title,"Digitization") do |l|
|
10
10
|
CF::InputFormat.new({:line => l, :name => "text", :required => "true"})
|
11
|
-
CF::Station.create({:line => l, :type => "
|
11
|
+
CF::Station.create({:line => l, :type => "robot"}) do |s|
|
12
12
|
CF::RobotWorker.create({:station => s, :type => "entity_extraction_robot", :settings => {:document => ["Franz Kafka and George Orwell are authors. Ludwig Von Beethoven and Mozart are musicians. China and Japan are countries"]}})
|
13
13
|
end
|
14
14
|
end
|
data/spec/run_spec.rb
CHANGED
@@ -255,7 +255,7 @@ module CF
|
|
255
255
|
found_run['title'].should eql("run-#{title}")
|
256
256
|
found_run['line']['title'].should eql(title)
|
257
257
|
found_run['line']['department'].should eql("Digitization")
|
258
|
-
found_run['status'].should eql("
|
258
|
+
found_run['status'].should eql("active")
|
259
259
|
end
|
260
260
|
|
261
261
|
it "should create production run and try to find run with unused title" do
|
@@ -302,31 +302,33 @@ module CF
|
|
302
302
|
end
|
303
303
|
end
|
304
304
|
run = CF::Run.create(line, "run-#{title}", [{"url"=> "http://www.sprout-technology.com"}])
|
305
|
+
sleep 10
|
305
306
|
progress = run.progress_details
|
306
307
|
progress_1 = CF::Run.progress_details("run-#{title}")
|
307
308
|
progress.should eql(progress_1)
|
308
|
-
progress['
|
309
|
-
progress['
|
309
|
+
progress['completed_units'].should eql(1)
|
310
|
+
progress['total_units'].should eql(1)
|
310
311
|
end
|
311
312
|
|
312
313
|
it "should get the progress details for multiple stations" do
|
313
314
|
WebMock.allow_net_connect!
|
314
315
|
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
315
|
-
sleep
|
316
|
+
sleep 2
|
316
317
|
line = CF::Line.create(title,"Digitization") do |l|
|
317
318
|
CF::InputFormat.new({:line => l, :name => "url", :valid_type => "url", :required => "true"})
|
318
319
|
CF::Station.create({:line => l, :type => "robot"}) do |s|
|
319
320
|
CF::RobotWorker.create({:station => s, :type => "text_extraction_robot", :settings => {:url => ["{{url}}"]}})
|
320
321
|
end
|
321
|
-
CF::Station.create({:line => l, :type => "
|
322
|
+
CF::Station.create({:line => l, :type => "robot"}) do |s1|
|
322
323
|
CF::RobotWorker.create({:station => s1, :type => "keyword_matching_robot", :settings => {:content => ["{{contents_of_url}}"], :keywords => ["SaaS","see","additional","deepak","saroj"]}})
|
323
324
|
end
|
324
325
|
end
|
325
326
|
run = CF::Run.create(line, "run-#{title}", [{"url"=> "http://techcrunch.com/2011/07/26/with-v2-0-assistly-brings-a-simple-pricing-model-rewards-and-a-bit-of-free-to-customer-service-software"}])
|
327
|
+
sleep 5
|
326
328
|
progress = run.progress_details
|
327
329
|
progress_1 = CF::Run.progress_details("run-#{title}")
|
328
330
|
progress.should eql(progress_1)
|
329
|
-
progress['
|
331
|
+
progress['total_units'].should eql(1)
|
330
332
|
end
|
331
333
|
end
|
332
334
|
|
@@ -358,7 +360,7 @@ module CF
|
|
358
360
|
run_2 = CF::Run.create(line_2, "run-#{title}_2", [{"url"=> "http://www.sprout-technology.com"}])
|
359
361
|
got_run = CF::Run.all
|
360
362
|
got_run['runs'].class.should eql(Array)
|
361
|
-
got_run['runs'].first['status'].should eql("
|
363
|
+
got_run['runs'].first['status'].should eql("completed")
|
362
364
|
end
|
363
365
|
|
364
366
|
it "should return all the runs for a line" do
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module CF
|
4
|
+
describe CF::HumanWorker do
|
5
|
+
context "create badge" do
|
6
|
+
it "should create stat badge for worker in block DSL way" do
|
7
|
+
WebMock.allow_net_connect!
|
8
|
+
stat_badge = {:approval_rating => 40, :assignment_duration => 1800}
|
9
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
10
|
+
sleep 1
|
11
|
+
line = CF::Line.create(title, "Digitization") do |l|
|
12
|
+
CF::InputFormat.new({:line => l, :name => "image_url", :required => true, :valid_type => "url"})
|
13
|
+
CF::Station.create({:line =>l, :type => "work"}) do |s|
|
14
|
+
CF::HumanWorker.new({:station => s, :number => 1, :reward => 20, :stat_badge => stat_badge})
|
15
|
+
end
|
16
|
+
end
|
17
|
+
line.stations.first.type.should eql("WorkStation")
|
18
|
+
line.stations.first.worker.number.should eql(1)
|
19
|
+
line.stations.first.worker.reward.should eql(20)
|
20
|
+
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>40, "assignment_duration"=>1800, "abandonment_rate"=>30, "country"=>nil})
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should create stat badge for worker in plain ruby way" do
|
24
|
+
WebMock.allow_net_connect!
|
25
|
+
stat_badge = {:approval_rating => 40, :assignment_duration => 1800}
|
26
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
27
|
+
sleep 1
|
28
|
+
line = CF::Line.new(title, "Digitization")
|
29
|
+
input_format = CF::InputFormat.new({:name => "image_url", :required => true, :valid_type => "url"})
|
30
|
+
line.input_formats input_format
|
31
|
+
|
32
|
+
station = CF::Station.new({:type => "work"})
|
33
|
+
line.stations station
|
34
|
+
|
35
|
+
worker = CF::HumanWorker.new({:number => 1, :reward => 20, :stat_badge => stat_badge})
|
36
|
+
line.stations.first.worker = worker
|
37
|
+
|
38
|
+
line.stations.first.type.should eql("WorkStation")
|
39
|
+
line.stations.first.worker.number.should eql(1)
|
40
|
+
line.stations.first.worker.reward.should eql(20)
|
41
|
+
line.stations.first.worker.stat_badge.should eql({"approval_rating"=>40, "assignment_duration"=>1800, "abandonment_rate"=>30, "country"=>nil})
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CF::TestRun do
|
4
|
+
context "create a production test run" do
|
5
|
+
it "should create a test production in a plain ruby way" do
|
6
|
+
WebMock.allow_net_connect!
|
7
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
8
|
+
sleep 1
|
9
|
+
line = CF::Line.new(title, "Digitization")
|
10
|
+
input_format_1 = CF::InputFormat.new({:name => "Company", :required => true})
|
11
|
+
input_format_2 = CF::InputFormat.new({:name => "Website", :required => true, :valid_type => "url"})
|
12
|
+
line.input_formats input_format_1
|
13
|
+
line.input_formats input_format_2
|
14
|
+
|
15
|
+
station = CF::Station.new({:type => "work"})
|
16
|
+
line.stations station
|
17
|
+
|
18
|
+
worker = CF::HumanWorker.new({:number => 1, :reward => 20})
|
19
|
+
line.stations.first.worker = worker
|
20
|
+
|
21
|
+
form = CF::TaskForm.new({:title => "Enter text from a business card image", :instruction => "Describe"})
|
22
|
+
line.stations.first.form = form
|
23
|
+
|
24
|
+
form_fields_1 = CF::FormField.new({:label => "First Name", :field_type => "short_answer", :required => "true"})
|
25
|
+
line.stations.first.form.form_fields form_fields_1
|
26
|
+
form_fields_2 = CF::FormField.new({:label => "Middle Name", :field_type => "short_answer"})
|
27
|
+
line.stations.first.form.form_fields form_fields_2
|
28
|
+
form_fields_3 = CF::FormField.new({:label => "Last Name", :field_type => "short_answer", :required => "true"})
|
29
|
+
line.stations.first.form.form_fields form_fields_3
|
30
|
+
|
31
|
+
gold_standard = CF::GoldStandard.new({ :line => line,
|
32
|
+
:name => "gold_standard_#{Time.new.strftime('%Y%b%d-%H%M%S')}",
|
33
|
+
:input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
|
34
|
+
:expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
|
35
|
+
})
|
36
|
+
run = CF::TestRun.create(line, "run-#{title}", 1)
|
37
|
+
run.line.should eql(line)
|
38
|
+
sleep 4
|
39
|
+
CF::Run.find(run.title)["progress"].should eq({"completed_units"=>0, "total_units"=>1})
|
40
|
+
|
41
|
+
end
|
42
|
+
it "should create a test production in a block DSL way" do
|
43
|
+
WebMock.allow_net_connect!
|
44
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
45
|
+
sleep 1
|
46
|
+
line = CF::Line.create(title,"Digitization") do |l|
|
47
|
+
CF::InputFormat.new({:line => l, :name => "Company", :required => true, :valid_type => "general"})
|
48
|
+
CF::InputFormat.new({:line => l, :name => "Website", :required => true, :valid_type => "url"})
|
49
|
+
CF::Station.create({:line => l, :type => "work"}) do |s|
|
50
|
+
CF::HumanWorker.new({:station => s, :number => 1, :reward => 10})
|
51
|
+
CF::TaskForm.create({:station => s, :title => "Enter text from a business card image", :instruction => "Describe"}) do |i|
|
52
|
+
CF::FormField.new({:form => i, :label => "First Name", :field_type => "short_answer", :required => "true"})
|
53
|
+
CF::FormField.new({:form => i, :label => "Middle Name", :field_type => "short_answer"})
|
54
|
+
CF::FormField.new({:form => i, :label => "Last Name", :field_type => "short_answer", :required => "true"})
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
gold_standard = CF::GoldStandard.new({ :line => line,
|
59
|
+
:name => "gold_standard_#{Time.new.strftime('%Y%b%d-%H%M%S')}",
|
60
|
+
:input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
|
61
|
+
:expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
|
62
|
+
})
|
63
|
+
run = CF::TestRun.new(line, "run-#{title}", 1)
|
64
|
+
run.line.should eql(line)
|
65
|
+
sleep 4
|
66
|
+
CF::Run.find(run.title)["progress"].should eq({"completed_units"=>0, "total_units"=>1})
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should rais error if goldstandard number is not valid" do
|
70
|
+
WebMock.allow_net_connect!
|
71
|
+
title = "line_title#{Time.new.strftime('%Y%b%d-%H%M%S')}".downcase
|
72
|
+
sleep 1
|
73
|
+
line = CF::Line.new(title, "Digitization")
|
74
|
+
input_format_1 = CF::InputFormat.new({:name => "Company", :required => true})
|
75
|
+
input_format_2 = CF::InputFormat.new({:name => "Website", :required => true, :valid_type => "url"})
|
76
|
+
line.input_formats input_format_1
|
77
|
+
line.input_formats input_format_2
|
78
|
+
|
79
|
+
station = CF::Station.new({:type => "work"})
|
80
|
+
line.stations station
|
81
|
+
|
82
|
+
worker = CF::HumanWorker.new({:number => 1, :reward => 20})
|
83
|
+
line.stations.first.worker = worker
|
84
|
+
|
85
|
+
form = CF::TaskForm.new({:title => "Enter text from a business card image", :instruction => "Describe"})
|
86
|
+
line.stations.first.form = form
|
87
|
+
|
88
|
+
form_fields_1 = CF::FormField.new({:label => "First Name", :field_type => "short_answer", :required => "true"})
|
89
|
+
line.stations.first.form.form_fields form_fields_1
|
90
|
+
form_fields_2 = CF::FormField.new({:label => "Middle Name", :field_type => "short_answer"})
|
91
|
+
line.stations.first.form.form_fields form_fields_2
|
92
|
+
form_fields_3 = CF::FormField.new({:label => "Last Name", :field_type => "short_answer", :required => "true"})
|
93
|
+
line.stations.first.form.form_fields form_fields_3
|
94
|
+
|
95
|
+
gold_standard = CF::GoldStandard.create({ :line => line,
|
96
|
+
:name => "gold_standard_#{Time.new.strftime('%Y%b%d-%H%M%S')}",
|
97
|
+
:input => {'image_url' => "http://onwired.com/images/portfolio/linda-stanley-business-card.jpg"},
|
98
|
+
:expected_output => {"first_name" => {"value" => "John"}, "last_name" => {"value" => "Lennon"}, "company" => {"value" => "Sprout"}}
|
99
|
+
})
|
100
|
+
run = CF::TestRun.new(line, "run-#{title}", 4)
|
101
|
+
run.errors.should eql(["Error Only 1 gold standard available"])
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
metadata
CHANGED
@@ -1,288 +1,291 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudfactory
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.4
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
5
|
+
version: 0.4.5
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- CloudFactory.com
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
|
13
|
+
date: 2012-02-01 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
15
16
|
name: i18n
|
16
|
-
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
19
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version:
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
22
24
|
type: :runtime
|
23
|
-
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
26
27
|
name: activesupport
|
27
|
-
|
28
|
+
prerelease: false
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
30
|
none: false
|
29
|
-
requirements:
|
31
|
+
requirements:
|
30
32
|
- - ~>
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version:
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "3.0"
|
33
35
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
37
38
|
name: hashie
|
38
|
-
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
41
|
none: false
|
40
|
-
requirements:
|
42
|
+
requirements:
|
41
43
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version:
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "1.0"
|
44
46
|
type: :runtime
|
45
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
48
49
|
name: rest-client
|
49
|
-
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
52
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version:
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
55
57
|
type: :runtime
|
56
|
-
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
59
60
|
name: json
|
60
|
-
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
61
63
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version:
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
66
68
|
type: :runtime
|
67
|
-
|
68
|
-
|
69
|
-
- !ruby/object:Gem::Dependency
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
70
71
|
name: thor
|
71
|
-
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
72
74
|
none: false
|
73
|
-
requirements:
|
75
|
+
requirements:
|
74
76
|
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version:
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0.14"
|
77
79
|
type: :runtime
|
78
|
-
|
79
|
-
|
80
|
-
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: *id006
|
81
|
+
- !ruby/object:Gem::Dependency
|
81
82
|
name: highline
|
82
|
-
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
83
85
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version:
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: "0"
|
88
90
|
type: :runtime
|
89
|
-
|
90
|
-
|
91
|
-
- !ruby/object:Gem::Dependency
|
91
|
+
version_requirements: *id007
|
92
|
+
- !ruby/object:Gem::Dependency
|
92
93
|
name: httparty
|
93
|
-
|
94
|
+
prerelease: false
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
94
96
|
none: false
|
95
|
-
requirements:
|
97
|
+
requirements:
|
96
98
|
- - ~>
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version:
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: "0.7"
|
99
101
|
type: :runtime
|
100
|
-
|
101
|
-
|
102
|
-
- !ruby/object:Gem::Dependency
|
102
|
+
version_requirements: *id008
|
103
|
+
- !ruby/object:Gem::Dependency
|
103
104
|
name: terminal-table
|
104
|
-
|
105
|
+
prerelease: false
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
105
107
|
none: false
|
106
|
-
requirements:
|
108
|
+
requirements:
|
107
109
|
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version:
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: "1.4"
|
110
112
|
type: :runtime
|
111
|
-
|
112
|
-
|
113
|
-
- !ruby/object:Gem::Dependency
|
113
|
+
version_requirements: *id009
|
114
|
+
- !ruby/object:Gem::Dependency
|
114
115
|
name: millisami-csv-hash
|
115
|
-
|
116
|
+
prerelease: false
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
116
118
|
none: false
|
117
|
-
requirements:
|
118
|
-
- -
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version:
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: "0"
|
121
123
|
type: :runtime
|
122
|
-
|
123
|
-
|
124
|
-
- !ruby/object:Gem::Dependency
|
124
|
+
version_requirements: *id010
|
125
|
+
- !ruby/object:Gem::Dependency
|
125
126
|
name: awesome_print
|
126
|
-
|
127
|
+
prerelease: false
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
127
129
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version:
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: "0"
|
132
134
|
type: :runtime
|
133
|
-
|
134
|
-
|
135
|
-
- !ruby/object:Gem::Dependency
|
135
|
+
version_requirements: *id011
|
136
|
+
- !ruby/object:Gem::Dependency
|
136
137
|
name: ruby-debug19
|
137
|
-
|
138
|
+
prerelease: false
|
139
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
138
140
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version:
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: "0"
|
143
145
|
type: :development
|
144
|
-
|
145
|
-
|
146
|
-
- !ruby/object:Gem::Dependency
|
146
|
+
version_requirements: *id012
|
147
|
+
- !ruby/object:Gem::Dependency
|
147
148
|
name: ruby-debug19
|
148
|
-
|
149
|
+
prerelease: false
|
150
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
149
151
|
none: false
|
150
|
-
requirements:
|
151
|
-
- -
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version:
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: "0"
|
154
156
|
type: :development
|
155
|
-
|
156
|
-
|
157
|
-
- !ruby/object:Gem::Dependency
|
157
|
+
version_requirements: *id013
|
158
|
+
- !ruby/object:Gem::Dependency
|
158
159
|
name: aruba
|
159
|
-
|
160
|
+
prerelease: false
|
161
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
160
162
|
none: false
|
161
|
-
requirements:
|
162
|
-
- -
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
version:
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: "0"
|
165
167
|
type: :development
|
166
|
-
|
167
|
-
|
168
|
-
- !ruby/object:Gem::Dependency
|
168
|
+
version_requirements: *id014
|
169
|
+
- !ruby/object:Gem::Dependency
|
169
170
|
name: rails
|
170
|
-
|
171
|
+
prerelease: false
|
172
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
171
173
|
none: false
|
172
|
-
requirements:
|
174
|
+
requirements:
|
173
175
|
- - ~>
|
174
|
-
- !ruby/object:Gem::Version
|
176
|
+
- !ruby/object:Gem::Version
|
175
177
|
version: 3.0.3
|
176
178
|
type: :development
|
177
|
-
|
178
|
-
|
179
|
-
- !ruby/object:Gem::Dependency
|
179
|
+
version_requirements: *id015
|
180
|
+
- !ruby/object:Gem::Dependency
|
180
181
|
name: bundler
|
181
|
-
|
182
|
+
prerelease: false
|
183
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
182
184
|
none: false
|
183
|
-
requirements:
|
185
|
+
requirements:
|
184
186
|
- - ~>
|
185
|
-
- !ruby/object:Gem::Version
|
187
|
+
- !ruby/object:Gem::Version
|
186
188
|
version: 1.0.0
|
187
189
|
type: :development
|
188
|
-
|
189
|
-
|
190
|
-
- !ruby/object:Gem::Dependency
|
190
|
+
version_requirements: *id016
|
191
|
+
- !ruby/object:Gem::Dependency
|
191
192
|
name: generator_spec
|
192
|
-
|
193
|
+
prerelease: false
|
194
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
193
195
|
none: false
|
194
|
-
requirements:
|
196
|
+
requirements:
|
195
197
|
- - ~>
|
196
|
-
- !ruby/object:Gem::Version
|
198
|
+
- !ruby/object:Gem::Version
|
197
199
|
version: 0.8.3
|
198
200
|
type: :development
|
199
|
-
|
200
|
-
|
201
|
-
- !ruby/object:Gem::Dependency
|
201
|
+
version_requirements: *id017
|
202
|
+
- !ruby/object:Gem::Dependency
|
202
203
|
name: rspec-rails
|
203
|
-
|
204
|
+
prerelease: false
|
205
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
204
206
|
none: false
|
205
|
-
requirements:
|
206
|
-
- -
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version:
|
207
|
+
requirements:
|
208
|
+
- - ">="
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: "0"
|
209
211
|
type: :development
|
210
|
-
|
211
|
-
|
212
|
-
- !ruby/object:Gem::Dependency
|
212
|
+
version_requirements: *id018
|
213
|
+
- !ruby/object:Gem::Dependency
|
213
214
|
name: cucumber
|
214
|
-
|
215
|
+
prerelease: false
|
216
|
+
requirement: &id019 !ruby/object:Gem::Requirement
|
215
217
|
none: false
|
216
|
-
requirements:
|
217
|
-
- -
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
version:
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: "0"
|
220
222
|
type: :development
|
221
|
-
|
222
|
-
|
223
|
-
- !ruby/object:Gem::Dependency
|
223
|
+
version_requirements: *id019
|
224
|
+
- !ruby/object:Gem::Dependency
|
224
225
|
name: rdoc
|
225
|
-
|
226
|
+
prerelease: false
|
227
|
+
requirement: &id020 !ruby/object:Gem::Requirement
|
226
228
|
none: false
|
227
|
-
requirements:
|
229
|
+
requirements:
|
228
230
|
- - ~>
|
229
|
-
- !ruby/object:Gem::Version
|
231
|
+
- !ruby/object:Gem::Version
|
230
232
|
version: 3.5.3
|
231
233
|
type: :development
|
232
|
-
|
233
|
-
|
234
|
-
- !ruby/object:Gem::Dependency
|
234
|
+
version_requirements: *id020
|
235
|
+
- !ruby/object:Gem::Dependency
|
235
236
|
name: vcr
|
236
|
-
|
237
|
+
prerelease: false
|
238
|
+
requirement: &id021 !ruby/object:Gem::Requirement
|
237
239
|
none: false
|
238
|
-
requirements:
|
239
|
-
- -
|
240
|
-
- !ruby/object:Gem::Version
|
241
|
-
version:
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: "0"
|
242
244
|
type: :development
|
243
|
-
|
244
|
-
|
245
|
-
- !ruby/object:Gem::Dependency
|
245
|
+
version_requirements: *id021
|
246
|
+
- !ruby/object:Gem::Dependency
|
246
247
|
name: rake
|
247
|
-
|
248
|
+
prerelease: false
|
249
|
+
requirement: &id022 !ruby/object:Gem::Requirement
|
248
250
|
none: false
|
249
|
-
requirements:
|
250
|
-
- -
|
251
|
-
- !ruby/object:Gem::Version
|
252
|
-
version:
|
251
|
+
requirements:
|
252
|
+
- - ">="
|
253
|
+
- !ruby/object:Gem::Version
|
254
|
+
version: "0"
|
253
255
|
type: :development
|
254
|
-
|
255
|
-
|
256
|
-
- !ruby/object:Gem::Dependency
|
256
|
+
version_requirements: *id022
|
257
|
+
- !ruby/object:Gem::Dependency
|
257
258
|
name: webmock
|
258
|
-
|
259
|
+
prerelease: false
|
260
|
+
requirement: &id023 !ruby/object:Gem::Requirement
|
259
261
|
none: false
|
260
|
-
requirements:
|
261
|
-
- -
|
262
|
-
- !ruby/object:Gem::Version
|
263
|
-
version:
|
262
|
+
requirements:
|
263
|
+
- - ">="
|
264
|
+
- !ruby/object:Gem::Version
|
265
|
+
version: "0"
|
264
266
|
type: :development
|
265
|
-
|
266
|
-
|
267
|
-
- !ruby/object:Gem::Dependency
|
267
|
+
version_requirements: *id023
|
268
|
+
- !ruby/object:Gem::Dependency
|
268
269
|
name: timecop
|
269
|
-
|
270
|
+
prerelease: false
|
271
|
+
requirement: &id024 !ruby/object:Gem::Requirement
|
270
272
|
none: false
|
271
|
-
requirements:
|
272
|
-
- -
|
273
|
-
- !ruby/object:Gem::Version
|
274
|
-
version:
|
273
|
+
requirements:
|
274
|
+
- - ">="
|
275
|
+
- !ruby/object:Gem::Version
|
276
|
+
version: "0"
|
275
277
|
type: :development
|
276
|
-
|
277
|
-
version_requirements: *2154407000
|
278
|
+
version_requirements: *id024
|
278
279
|
description: A Ruby wrapper and CLI for to interact with Cloudfactory.com REST API
|
279
|
-
email:
|
280
|
+
email:
|
280
281
|
- administrator@sprout-technology.com
|
281
|
-
executables:
|
282
|
+
executables:
|
282
283
|
- cf
|
283
284
|
extensions: []
|
285
|
+
|
284
286
|
extra_rdoc_files: []
|
285
|
-
|
287
|
+
|
288
|
+
files:
|
286
289
|
- .gitignore
|
287
290
|
- .rspec
|
288
291
|
- CHANGELOG.md
|
@@ -314,6 +317,7 @@ files:
|
|
314
317
|
- fixtures/input_data/test.csv
|
315
318
|
- lib/cf.rb
|
316
319
|
- lib/cf/account.rb
|
320
|
+
- lib/cf/badge.rb
|
317
321
|
- lib/cf/cli.rb
|
318
322
|
- lib/cf/cli/config.rb
|
319
323
|
- lib/cf/cli/form.rb
|
@@ -329,6 +333,8 @@ files:
|
|
329
333
|
- lib/cf/custom_task_form.rb
|
330
334
|
- lib/cf/department.rb
|
331
335
|
- lib/cf/form_field.rb
|
336
|
+
- lib/cf/gold_standard.rb
|
337
|
+
- lib/cf/help.txt
|
332
338
|
- lib/cf/human_worker.rb
|
333
339
|
- lib/cf/input_format.rb
|
334
340
|
- lib/cf/line.rb
|
@@ -337,6 +343,7 @@ files:
|
|
337
343
|
- lib/cf/run.rb
|
338
344
|
- lib/cf/station.rb
|
339
345
|
- lib/cf/task_form.rb
|
346
|
+
- lib/cf/test_run.rb
|
340
347
|
- lib/cf/version.rb
|
341
348
|
- lib/generators/cf/form/form_generator.rb
|
342
349
|
- lib/generators/cf/form/templates/cf_form.html.erb
|
@@ -344,7 +351,8 @@ files:
|
|
344
351
|
- lib/generators/cf/install/templates/README
|
345
352
|
- lib/generators/cf/install/templates/cloudfactory.rb
|
346
353
|
- spec/account_spec.rb
|
347
|
-
- spec/
|
354
|
+
- spec/badges/station_1.html
|
355
|
+
- spec/badges_spec.rb
|
348
356
|
- spec/concept_tagging_robot_spec.rb
|
349
357
|
- spec/config_spec.rb
|
350
358
|
- spec/content_scraping_robot_spec.rb
|
@@ -354,6 +362,8 @@ files:
|
|
354
362
|
- spec/form_field_spec.rb
|
355
363
|
- spec/generators/form_generator_spec.rb
|
356
364
|
- spec/generators/install_generator_spec.rb
|
365
|
+
- spec/gold_standard_spec.rb
|
366
|
+
- spec/gold_standards.csv
|
357
367
|
- spec/google_translate_robot_spec.rb
|
358
368
|
- spec/human_worker_spec.rb
|
359
369
|
- spec/image_processing_robot_spec.rb
|
@@ -367,49 +377,80 @@ files:
|
|
367
377
|
- spec/run_spec.rb
|
368
378
|
- spec/sentiment_robot_spec.rb
|
369
379
|
- spec/spec_helper.rb
|
380
|
+
- spec/stat_badge_spec.rb
|
370
381
|
- spec/station_spec.rb
|
371
382
|
- spec/task_form_spec.rb
|
372
383
|
- spec/term_extraction_robot_spec.rb
|
384
|
+
- spec/test_run_spec.rb
|
373
385
|
- spec/text_appending_robot_spec.rb
|
374
386
|
homepage: http://cloudfactory.com
|
375
387
|
licenses: []
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
388
|
+
|
389
|
+
post_install_message: |
|
390
|
+
--------------------------------------------------------------------------------
|
391
|
+
|
392
|
+
Sweet. You now have the 'cf' command installed. Test drive it with:
|
393
|
+
> cf help
|
394
|
+
|
395
|
+
1. Sign up for your CloudFactory account and get your API key
|
396
|
+
http://cloudfactory.com/users/sign_up
|
397
|
+
Get API key from welcome email or http://cloudfactory.com/account#settings
|
398
|
+
|
399
|
+
2. Login with your credentials
|
400
|
+
> cf login
|
401
|
+
|
402
|
+
3. Generate your first assembly line...
|
403
|
+
> cf line generate <line-title>
|
404
|
+
|
405
|
+
4. Go into generated line directory
|
406
|
+
> cd <line-title>
|
407
|
+
|
408
|
+
5. Edit the generated line.yml to design your perfect assembly line
|
409
|
+
See http://developers.cloudfactory.com/lines/yaml.html
|
410
|
+
|
411
|
+
6. Create your line in CloudFactory
|
412
|
+
> cf line create
|
413
|
+
|
414
|
+
7. Do a test production run in the sandbox first...
|
415
|
+
> cf production start TITLE -i=INPUT_DATA.CSV
|
416
|
+
|
417
|
+
8. Go live! Send your production run to real workers...
|
418
|
+
> cf production start TITLE -i=INPUT_DATA.CSV --live
|
419
|
+
|
420
|
+
------------------------------------------------------------------------------
|
421
|
+
|
422
|
+
Follow @thecloudfactory on Twitter for announcements, updates, and news.
|
423
|
+
https://twitter.com/thecloudfactory
|
424
|
+
|
425
|
+
Add your project or organization to the apps wiki!
|
426
|
+
https://github.com/sprout/cloudfactory_ruby/wiki/Apps
|
427
|
+
|
428
|
+
--------------------------------------------------------------------------------
|
429
|
+
|
391
430
|
rdoc_options: []
|
392
|
-
|
431
|
+
|
432
|
+
require_paths:
|
393
433
|
- lib
|
394
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
434
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
395
435
|
none: false
|
396
|
-
requirements:
|
397
|
-
- -
|
398
|
-
- !ruby/object:Gem::Version
|
399
|
-
version:
|
400
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
436
|
+
requirements:
|
437
|
+
- - ">="
|
438
|
+
- !ruby/object:Gem::Version
|
439
|
+
version: "0"
|
440
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
401
441
|
none: false
|
402
|
-
requirements:
|
403
|
-
- -
|
404
|
-
- !ruby/object:Gem::Version
|
405
|
-
version:
|
442
|
+
requirements:
|
443
|
+
- - ">="
|
444
|
+
- !ruby/object:Gem::Version
|
445
|
+
version: "0"
|
406
446
|
requirements: []
|
447
|
+
|
407
448
|
rubyforge_project: cloudfactory
|
408
|
-
rubygems_version: 1.8.
|
449
|
+
rubygems_version: 1.8.7
|
409
450
|
signing_key:
|
410
451
|
specification_version: 3
|
411
452
|
summary: A Ruby wrapper and CLI for Cloudfactory.com
|
412
|
-
test_files:
|
453
|
+
test_files:
|
413
454
|
- features/error_custom_task_form.feature
|
414
455
|
- features/error_form_field.feature
|
415
456
|
- features/error_task_form.feature
|
@@ -428,7 +469,8 @@ test_files:
|
|
428
469
|
- features/task_form.feature
|
429
470
|
- features/whoami.feature
|
430
471
|
- spec/account_spec.rb
|
431
|
-
- spec/
|
472
|
+
- spec/badges/station_1.html
|
473
|
+
- spec/badges_spec.rb
|
432
474
|
- spec/concept_tagging_robot_spec.rb
|
433
475
|
- spec/config_spec.rb
|
434
476
|
- spec/content_scraping_robot_spec.rb
|
@@ -438,6 +480,8 @@ test_files:
|
|
438
480
|
- spec/form_field_spec.rb
|
439
481
|
- spec/generators/form_generator_spec.rb
|
440
482
|
- spec/generators/install_generator_spec.rb
|
483
|
+
- spec/gold_standard_spec.rb
|
484
|
+
- spec/gold_standards.csv
|
441
485
|
- spec/google_translate_robot_spec.rb
|
442
486
|
- spec/human_worker_spec.rb
|
443
487
|
- spec/image_processing_robot_spec.rb
|
@@ -451,8 +495,10 @@ test_files:
|
|
451
495
|
- spec/run_spec.rb
|
452
496
|
- spec/sentiment_robot_spec.rb
|
453
497
|
- spec/spec_helper.rb
|
498
|
+
- spec/stat_badge_spec.rb
|
454
499
|
- spec/station_spec.rb
|
455
500
|
- spec/task_form_spec.rb
|
456
501
|
- spec/term_extraction_robot_spec.rb
|
502
|
+
- spec/test_run_spec.rb
|
457
503
|
- spec/text_appending_robot_spec.rb
|
458
504
|
has_rdoc:
|