taverna-player 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDIzMTk5MTVmNTA4MWMzNDUyYWExMjFjMThiZTcxY2IzNDdmNTM1NA==
5
+ data.tar.gz: !binary |-
6
+ YzNjZTVjNzBhN2JkYmQxNjBkZWM3NTAwMGU0NmViMDBhYjRiZjc4Ng==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MDNmNGNkMTI4MWI5NDJjYTQ5NGFlZWQ4NDYxMmQ2YjBkMjIwY2MyZDhmZGQw
10
+ MTI5NzExNzE1MzRmMGMzM2UxYjNkYWVmNDcwZTJiYWY4Y2Y5NGU0YzFmZDRi
11
+ MDRkMmQ4ZmMxYzk2MzIzNmM4MDgxOTY4ZGI0ZDI2ZjI1OTRkYzI=
12
+ data.tar.gz: !binary |-
13
+ MGVlM2MzNTk5ZDMyNDliYzY2YWJlOTM4YzM1NjAxYzE1Y2VhOWI1NGNjMzZk
14
+ N2EwMDkxNmQ1YmFlYTYxMmZiMDZhZWY2YzEyMTU0MjFhNzYxNDllNmI5OTA2
15
+ Y2U3N2RkYWUzZWNiMjA5ZDhkNDI2ZWQ3M2VjYzM5NWI5ODg5OGQ=
@@ -0,0 +1 @@
1
+ taverna-player
@@ -0,0 +1 @@
1
+ ruby-1.9.3-p484
@@ -1,5 +1,24 @@
1
1
  = Changes log for Taverna Player
2
2
 
3
+ == Version 0.7.0
4
+
5
+ * Refactor full run JSON output.
6
+ * Improve the runs/new JSON output.
7
+ * Add more interaction fields to the JSON output.
8
+ * Fix non-ASCII character in gemspec info.
9
+ * Fix non-ASCII character in README.
10
+ * [TAV-508] Allow workers to run against different servers.
11
+ * [TAV-511] Don't save run log if it's an empty file.
12
+ * Add note about JSON interface to the Readme.
13
+ * Add a note about the API Docs to the Readme.
14
+ * Rework the testing of an empty log file for better testing.
15
+ * Add tests for taverna credentials in env variable.
16
+ * [TAV-512] Fix overzealous file extension restrictions for inputs.
17
+ * Add an alert flash to the test layout.
18
+ * Use flash[:alert] not flash[:error].
19
+ * Recover from failed run creation more gracefully.
20
+ * Bump version of t2-server gem we are using.
21
+
3
22
  == Version 0.6.0
4
23
 
5
24
  * [TAV-485] Set up separate worker integration test.
@@ -6,9 +6,9 @@ URL:: http://www.taverna.org.uk
6
6
  Licence:: BSD (See LICENCE or http://www.opensource.org/licenses/bsd-license.php)
7
7
  Copyright:: (c) 2013, 2014 The University of Manchester, UK
8
8
 
9
- {<img src="https://badge.fury.io/rb/taverna-player.png" alt="Gem Version" />}[http://badge.fury.io/rb/taverna-player]
9
+ {<img src="https://badge.fury.io/rb/taverna-player.svg" alt="Gem Version" />}[http://badge.fury.io/rb/taverna-player]
10
10
  {<img src="https://codeclimate.com/github/myGrid/taverna-player.png" />}[https://codeclimate.com/github/myGrid/taverna-player]
11
- {<img src="https://travis-ci.org/myGrid/taverna-player.png?branch=master" alt="Build Status" />}[https://travis-ci.org/myGrid/taverna-player]
11
+ {<img src="https://travis-ci.org/myGrid/taverna-player.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/myGrid/taverna-player]
12
12
  {<img src="https://coveralls.io/repos/myGrid/taverna-player/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/myGrid/taverna-player?branch=master]
13
13
 
14
14
  == Synopsis
@@ -154,8 +154,8 @@ And everything should be found by the asset pipeline automatically.
154
154
  Make sure you have flash messages in your main layout
155
155
  (usually <tt>app/views/layouts/application.html.erb</tt>). For example:
156
156
 
157
- <p class="notice"><%= notice %></p>
158
- <p class="alert"><%= alert %></p>
157
+ <p id="notice"><%= notice %></p>
158
+ <p id="alert"><%= alert %></p>
159
159
 
160
160
  Taverna Player uses delayed_job to run workflows on a Taverna Server. If your
161
161
  application is not already using delayed_job then you can install the
@@ -687,7 +687,7 @@ running:
687
687
  https://example.com:8443/
688
688
 
689
689
  The above example shows a https server running on port 8443. If the service is
690
- on port 80 for http or port 443 for https then you dont need to specify the
690
+ on port 80 for http or port 443 for https then you don't need to specify the
691
691
  port.
692
692
 
693
693
  If there are services on the same host that require different credentials then
@@ -712,6 +712,25 @@ it is rserve:
712
712
 
713
713
  rserve://example.com:6311
714
714
 
715
+ == The Taverna Player API
716
+
717
+ There is more information about how you can more closely integrate Taverna
718
+ Player into your host application in the
719
+ {API Documentation}[http://mygrid.github.io/taverna-player].
720
+
721
+ == Embedding a workflow into another Web site
722
+
723
+ Workflow runs handled by Taverna Player can be embedded in other Web sites in
724
+ much the same way that media like YouTube videos can be. Documentation on how
725
+ to achieve this
726
+ {is available separately[https://github.com/myGrid/taverna-player/wiki/Embedding].
727
+
728
+ == Using Taverna Player as a Web Service
729
+
730
+ As well as providing HTML views to the host application, Taverna Player also
731
+ provides a RESTful Web Service interface. Documentation for this interface
732
+ {is available separately}[https://github.com/myGrid/taverna-player/wiki/JSON-API-Documentation].
733
+
715
734
  == Limitations and to-do list
716
735
 
717
736
  The most serious limitation is with the Service Credentials. Because Taverna
@@ -731,13 +750,10 @@ moment.
731
750
 
732
751
  In no particular order:
733
752
 
734
- * Taverna Player as a service. Allow usage of Taverna Player via a fully
735
- RESTful interface with JSON and XML support (in progress).
736
753
  * User specific (and therefore private) credentials wallet for secure services.
737
754
  * Comprehensive Taverna Server administration panel. This would allow admin
738
755
  users to view and manage runs directly on the Taverna Server along with
739
756
  other such admin tasks.
740
- * I18n support.
741
757
  * oEmbed support (see http://oembed.com/ for more details).
742
758
 
743
759
  == Support
@@ -1,2 +1 @@
1
- json.extract! run, :id, :name, :workflow_id, :saved_state, :status_message,
2
- :start_time, :finish_time
1
+ json.extract! run, :id, :name, :workflow_id, :state, :start_time, :finish_time
@@ -0,0 +1 @@
1
+ json.extract! port, :name, :depth, :value_type, :value_size, :path
@@ -1,3 +1,5 @@
1
1
  json.partial! "info", :run => @run
2
2
 
3
- json.partial! "inputs", :inputs => @run.inputs
3
+ json.inputs @run.inputs do |input|
4
+ json.partial! "port", :port => input
5
+ end
@@ -1 +1,15 @@
1
- json.partial! "info", :run => @run
1
+ workflow_title = TavernaPlayer.workflow_proxy.title(@workflow) || "None"
2
+ workflow_inputs = TavernaPlayer.workflow_proxy.inputs(@workflow)
3
+
4
+ json.run do
5
+ json.workflow_id @run.workflow_id
6
+ json.name workflow_title
7
+ unless workflow_inputs.empty?
8
+ json.inputs_attributes do
9
+ json.array! workflow_inputs do |input|
10
+ json.name input[:name]
11
+ json.value input[:example]
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,16 +1,16 @@
1
1
  json.partial! "info", :run => @run
2
2
 
3
- json.partial! "inputs", :inputs => @run.inputs
3
+ json.status_message @run.status_message
4
4
 
5
- if @run.outputs.size > 0
6
- json.outputs @run.outputs do |output|
7
- json.name output.name
8
- json.depth output.depth
9
- json.type output.metadata[:type]
10
- json.size output.metadata[:size]
11
- json.uri run_path(@run) + "/output/#{output.name}"
12
- end
5
+ json.inputs @run.inputs do |input|
6
+ json.partial! "port", :port => input
7
+ end
13
8
 
9
+ json.outputs @run.outputs do |output|
10
+ json.partial! "port", :port => output
11
+ end
12
+
13
+ if @run.outputs.size > 0
14
14
  json.outputs_zip @run.results.url
15
15
  end
16
16
 
@@ -22,5 +22,7 @@ unless @interaction.nil?
22
22
  json.interaction do
23
23
  json.serial @interaction.serial
24
24
  json.uri interaction_redirect(@interaction)
25
+ json.data @interaction.data
26
+ json.reply_uri "#{run_url(@run)}/interaction/#{@interaction.serial}"
25
27
  end
26
28
  end
@@ -126,11 +126,18 @@ module TavernaPlayer
126
126
  # POST /runs
127
127
  def create
128
128
  @run = Run.new(params[:run])
129
+
130
+ # Set workflow, just in case the create fails and needs to redirect
131
+ # back to the form
132
+ @workflow = @run.workflow
133
+
129
134
  if @run.save
130
135
  flash[:notice] = "Run was successfully created."
136
+ respond_with(@run, :status => :created, :location => @run)
137
+ else
138
+ flash[:alert] = "Run was not successfully created."
139
+ respond_with(@run)
131
140
  end
132
-
133
- respond_with(@run, :status => :created, :location => @run)
134
141
  end
135
142
 
136
143
  # PUT /runs/1
@@ -146,7 +153,7 @@ module TavernaPlayer
146
153
  flash[:notice] = "Run was deleted."
147
154
  respond_with(@run)
148
155
  else
149
- flash[:error] = "Run must be cancelled before deletion."
156
+ flash[:alert] = "Run must be cancelled before deletion."
150
157
  respond_with(@run, :nothing => true, :status => :forbidden) do |format|
151
158
  format.html { redirect_to :back }
152
159
  end
@@ -0,0 +1,25 @@
1
+ #------------------------------------------------------------------------------
2
+ # Copyright (c) 2014 The University of Manchester, UK.
3
+ #
4
+ # BSD Licenced. See LICENCE.rdoc for details.
5
+ #
6
+ # Taverna Player was developed in the BioVeL project, funded by the European
7
+ # Commission 7th Framework Programme (FP7), through grant agreement
8
+ # number 283359.
9
+ #
10
+ # Author: Robert Haines
11
+ #------------------------------------------------------------------------------
12
+
13
+ # We need to override the default Paperclip spoofing detector because it does
14
+ # not allow us to have arbitrary file extensions on files.
15
+ #
16
+ # See https://github.com/thoughtbot/paperclip/issues/1470 and many others.
17
+ module Paperclip
18
+ class MediaTypeSpoofDetector
19
+ alias :original_spoofed? :spoofed?
20
+
21
+ def spoofed?
22
+ original_spoofed? ? !(calculated_content_type == "text/plain") : false
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  #------------------------------------------------------------------------------
2
- # Copyright (c) 2013 The University of Manchester, UK.
2
+ # Copyright (c) 2013, 2014 The University of Manchester, UK.
3
3
  #
4
4
  # BSD Licenced. See LICENCE.rdoc for details.
5
5
  #
@@ -11,5 +11,5 @@
11
11
  #------------------------------------------------------------------------------
12
12
 
13
13
  module TavernaPlayer
14
- VERSION = "0.6.0"
14
+ VERSION = "0.7.0"
15
15
  end
@@ -25,6 +25,13 @@ module TavernaPlayer
25
25
  def initialize(run, workflow_file = nil)
26
26
  @run = run
27
27
  @workflow = workflow_file || TavernaPlayer.workflow_proxy.file(@run.workflow)
28
+ @server = "Run not yet initialized"
29
+ end
30
+
31
+ # Return the server address that this worker is using. Used mainly for
32
+ # testing.
33
+ def server
34
+ @server.to_s
28
35
  end
29
36
 
30
37
  # This tells delayed_job to only try and complete each run once.
@@ -37,13 +44,12 @@ module TavernaPlayer
37
44
 
38
45
  status_message("connect")
39
46
 
40
- server_uri = URI.parse(TavernaPlayer.server_address)
41
- credentials = T2Server::HttpBasic.new(TavernaPlayer.server_username,
42
- TavernaPlayer.server_password)
47
+ @server = URI.parse(ENV["TAVERNA_URI"] || TavernaPlayer.server_address)
48
+ credentials = server_credentials
43
49
  conn_params = TavernaPlayer.server_connection
44
50
 
45
51
  begin
46
- server = T2Server::Server.new(server_uri, conn_params)
52
+ server = T2Server::Server.new(@server, conn_params)
47
53
  wkf = File.read(@workflow)
48
54
 
49
55
  # Try and create the run bearing in mind that the server might be at
@@ -199,6 +205,20 @@ module TavernaPlayer
199
205
 
200
206
  private
201
207
 
208
+ # Get the credentials for the server
209
+ def server_credentials
210
+ creds = ENV["TAVERNA_CREDENTIALS"]
211
+
212
+ if creds.nil?
213
+ user = TavernaPlayer.server_username
214
+ pass = TavernaPlayer.server_password
215
+ else
216
+ user, pass = creds.split(':')
217
+ end
218
+
219
+ T2Server::HttpBasic.new(user, pass)
220
+ end
221
+
202
222
  # Run the specified callback and return false on error so that we know to
203
223
  # return out of the worker code completely.
204
224
  def run_callback(cb, message)
@@ -220,9 +240,12 @@ module TavernaPlayer
220
240
  Dir.mktmpdir(run.id, Rails.root.join("tmp")) do |tmp_dir|
221
241
  tmp_file_name = File.join(tmp_dir, "log.txt")
222
242
  begin
223
- run.log(tmp_file_name)
224
- @run.log = File.new(tmp_file_name)
225
- @run.save
243
+ # Only save the log file if it's not empty so as not to confuse
244
+ # Paperclip
245
+ unless run.log(tmp_file_name) == 0
246
+ @run.log = File.new(tmp_file_name)
247
+ @run.save
248
+ end
226
249
  rescue T2Server::AttributeNotFoundError
227
250
  # We don't care if there's no log but we do want to catch the error!
228
251
  end
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  "Workflows using Taverna Server. Taverna Player surfaces a workflow in "\
26
26
  "three ways: As a Web interface in the browser; As an embeddable widget "\
27
27
  "to be included in any other Web page; As a REST-based Web Service. All "\
28
- "three modes provide functionality to fully configure a workflows "\
28
+ "three modes provide functionality to fully configure a workflow's "\
29
29
  "inputs; run the workflow on a Taverna Server; collect workflow outputs, "\
30
30
  "logs and messages; and present the results in an appropriate manner."
31
31
  s.license = "BSD"
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
36
36
  s.add_dependency "rails", "~> 3.2.12"
37
37
  s.add_dependency "jquery-rails", "~> 3.0"
38
38
  s.add_dependency "paperclip", "~> 4.1"
39
- s.add_dependency "t2-server", "~> 1.0.0"
39
+ s.add_dependency "t2-server", "~> 1.1"
40
40
  s.add_dependency "delayed_job_active_record", "~> 4.0"
41
41
  s.add_dependency "daemons", "~> 1.1.9"
42
42
  s.add_dependency "rubyzip", "~> 0.9.9"
@@ -1,5 +1,5 @@
1
1
  <%
2
- # Copyright (c) 2013 The University of Manchester, UK.
2
+ # Copyright (c) 2013, 2014 The University of Manchester, UK.
3
3
  #
4
4
  # BSD Licenced. See LICENCE.rdoc for details.
5
5
  #
@@ -33,6 +33,7 @@
33
33
  </p>
34
34
 
35
35
  <p id="notice"><%= notice %></p>
36
+ <p id="alert"><%= alert %></p>
36
37
 
37
38
  <%= yield %>
38
39
 
@@ -0,0 +1 @@
1
+ This is a plain text file with a non-standard extension!
@@ -161,6 +161,15 @@ module TavernaPlayer
161
161
  "Did not render with the correct layout"
162
162
  end
163
163
 
164
+ test "should fail to create run via browser" do
165
+ assert_no_difference("Run.count") do
166
+ post :create, :run => { :workflow_id => @workflow.id, :name => nil }
167
+ end
168
+
169
+ assert_equal "Run was not successfully created.", flash[:alert],
170
+ "Incorrect or missing flash notice"
171
+ end
172
+
164
173
  test "should create run via browser" do
165
174
  assert_difference("Run.count") do
166
175
  post :create, :run => { :workflow_id => @workflow.id }
@@ -244,7 +253,7 @@ module TavernaPlayer
244
253
  delete :destroy, :id => @run1, :use_route => :taverna_player
245
254
  end
246
255
 
247
- assert_equal "Run must be cancelled before deletion.", flash[:error],
256
+ assert_equal "Run must be cancelled before deletion.", flash[:alert],
248
257
  "Incorrect or missing flash notice"
249
258
  assert_response :redirect, "Response was not a redirect"
250
259
  assert_redirected_to runs_path, "Did not redirect correctly"
@@ -256,7 +265,7 @@ module TavernaPlayer
256
265
  delete :destroy, :id => @run1, :format => :json
257
266
  end
258
267
 
259
- assert_equal "Run must be cancelled before deletion.", flash[:error],
268
+ assert_equal "Run must be cancelled before deletion.", flash[:alert],
260
269
  "Incorrect or missing flash notice"
261
270
  assert_response :forbidden, "Response was not forbidden"
262
271
  end
@@ -478,5 +478,23 @@ module TavernaPlayer
478
478
  "Incorrect filename generated"
479
479
  refute @port7.filename.ends_with?(".zip"), "Filename has 'zip' suffix"
480
480
  end
481
+
482
+ test "non-standard extensions for plain text files on input ports" do
483
+ file = fixture_file_upload "/files/plain-text.bad-extension"
484
+ assert_difference("RunPort::Input.count", 1, "Port was not created") do
485
+ port = RunPort::Input.create(:name => "test_port", :file => file)
486
+ assert port.valid?, "Port is invalid"
487
+ refute port.file.blank?, "File should be present"
488
+ end
489
+ end
490
+
491
+ test "non-standard extensions for plain text files on output ports" do
492
+ file = fixture_file_upload "/files/plain-text.bad-extension"
493
+ assert_difference("RunPort::Output.count", 1, "Port was not created") do
494
+ port = RunPort::Output.create(:name => "test_port", :file => file)
495
+ assert port.valid?, "Port is invalid"
496
+ refute port.file.blank?, "File should be present"
497
+ end
498
+ end
481
499
  end
482
500
  end
@@ -16,12 +16,14 @@ require 'test_helper'
16
16
  class WorkerTest < ActiveSupport::TestCase
17
17
  include FlexMock::TestCase
18
18
 
19
+ SERVER_ADDRESS = "http://localhost:1111/taverna"
20
+
19
21
  setup do
20
22
  @noop_callback = Proc.new { }
21
23
 
22
24
  # Taverna Server config that we need to set here for Travis, etc.
23
25
  TavernaPlayer.setup do |config|
24
- config.server_address = "http://localhost:1111/taverna"
26
+ config.server_address = SERVER_ADDRESS
25
27
  config.server_username = "taverna"
26
28
  config.server_password = "taverna"
27
29
  config.server_poll_interval = 0
@@ -35,7 +37,6 @@ class WorkerTest < ActiveSupport::TestCase
35
37
  # Stuff we can't test yet in TavernaPlayer::Worker.
36
38
  flexmock(TavernaPlayer::Worker).new_instances do |w|
37
39
  w.should_receive(:download_outputs).and_return_undefined
38
- w.should_receive(:download_log).and_return_undefined
39
40
  w.should_receive(:process_outputs).and_return([])
40
41
  end
41
42
 
@@ -47,6 +48,41 @@ class WorkerTest < ActiveSupport::TestCase
47
48
  assert_equal 1, @worker.max_attempts, "Max attempts was not 1."
48
49
  end
49
50
 
51
+ test "server address not set to a uri initially" do
52
+ assert_raise(URI::InvalidURIError) do
53
+ URI.parse(@worker.server)
54
+ end
55
+ end
56
+
57
+ test "server address and creds from config" do
58
+ # Stub the creation of a run on a Taverna Server so it fails.
59
+ flexmock(T2Server::Server).new_instances do |s|
60
+ s.should_receive(:initialize_run).once.
61
+ and_raise(RuntimeError)
62
+ end
63
+
64
+ @worker.perform
65
+
66
+ assert_equal SERVER_ADDRESS, @worker.server.to_s,
67
+ "Server address not read from config."
68
+ end
69
+
70
+ test "server address and creds from env" do
71
+ ENV["TAVERNA_URI"] = "https://localhost:8080/taverna"
72
+ ENV["TAVERNA_CREDENTIALS"] = "taverna:taverna"
73
+
74
+ # Stub the creation of a run on a Taverna Server so it fails.
75
+ flexmock(T2Server::Server).new_instances do |s|
76
+ s.should_receive(:initialize_run).once.
77
+ and_raise(RuntimeError)
78
+ end
79
+
80
+ @worker.perform
81
+
82
+ assert_equal ENV["TAVERNA_URI"], @worker.server.to_s,
83
+ "Server address not read from env."
84
+ end
85
+
50
86
  test "run a workflow" do
51
87
  # Stub the creation of a run on a Taverna Server with a failure first.
52
88
  flexmock(T2Server::Server).new_instances do |s|
@@ -65,6 +101,7 @@ class WorkerTest < ActiveSupport::TestCase
65
101
  r.should_receive(:start_time).and_return(Time.now)
66
102
  r.should_receive(:notifications).and_return([])
67
103
  r.should_receive(:finish_time).and_return(Time.now)
104
+ r.should_receive(:log).once.and_return(0)
68
105
  r.should_receive(:delete).and_return_undefined
69
106
  end
70
107
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taverna-player
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Robert Haines
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-03-06 00:00:00.000000000 Z
11
+ date: 2014-04-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: jquery-rails
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: paperclip
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,23 +55,20 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: t2-server
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
69
- version: 1.0.0
61
+ version: '1.1'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
77
- version: 1.0.0
68
+ version: '1.1'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: delayed_job_active_record
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ~>
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ~>
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: daemons
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ~>
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ~>
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rubyzip
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ~>
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ~>
124
109
  - !ruby/object:Gem::Version
@@ -126,7 +111,6 @@ dependencies:
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: coderay
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - ~>
132
116
  - !ruby/object:Gem::Version
@@ -134,7 +118,6 @@ dependencies:
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - ~>
140
123
  - !ruby/object:Gem::Version
@@ -142,7 +125,6 @@ dependencies:
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: rails_autolink
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
129
  - - ~>
148
130
  - !ruby/object:Gem::Version
@@ -150,7 +132,6 @@ dependencies:
150
132
  type: :runtime
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
136
  - - ~>
156
137
  - !ruby/object:Gem::Version
@@ -158,7 +139,6 @@ dependencies:
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: require_all
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
143
  - - ~>
164
144
  - !ruby/object:Gem::Version
@@ -166,7 +146,6 @@ dependencies:
166
146
  type: :runtime
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
150
  - - ~>
172
151
  - !ruby/object:Gem::Version
@@ -174,7 +153,6 @@ dependencies:
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: jbuilder
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
157
  - - ~>
180
158
  - !ruby/object:Gem::Version
@@ -182,7 +160,6 @@ dependencies:
182
160
  type: :runtime
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
164
  - - ~>
188
165
  - !ruby/object:Gem::Version
@@ -190,7 +167,6 @@ dependencies:
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: pmrpc-rails
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
171
  - - ~>
196
172
  - !ruby/object:Gem::Version
@@ -198,7 +174,6 @@ dependencies:
198
174
  type: :runtime
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
178
  - - ~>
204
179
  - !ruby/object:Gem::Version
@@ -206,7 +181,6 @@ dependencies:
206
181
  - !ruby/object:Gem::Dependency
207
182
  name: sqlite3
208
183
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
184
  requirements:
211
185
  - - ! '>='
212
186
  - !ruby/object:Gem::Version
@@ -214,7 +188,6 @@ dependencies:
214
188
  type: :development
215
189
  prerelease: false
216
190
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
191
  requirements:
219
192
  - - ! '>='
220
193
  - !ruby/object:Gem::Version
@@ -222,7 +195,6 @@ dependencies:
222
195
  - !ruby/object:Gem::Dependency
223
196
  name: coveralls
224
197
  requirement: !ruby/object:Gem::Requirement
225
- none: false
226
198
  requirements:
227
199
  - - ! '>='
228
200
  - !ruby/object:Gem::Version
@@ -230,7 +202,6 @@ dependencies:
230
202
  type: :development
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
- none: false
234
205
  requirements:
235
206
  - - ! '>='
236
207
  - !ruby/object:Gem::Version
@@ -238,7 +209,6 @@ dependencies:
238
209
  - !ruby/object:Gem::Dependency
239
210
  name: flexmock
240
211
  requirement: !ruby/object:Gem::Requirement
241
- none: false
242
212
  requirements:
243
213
  - - ~>
244
214
  - !ruby/object:Gem::Version
@@ -246,7 +216,6 @@ dependencies:
246
216
  type: :development
247
217
  prerelease: false
248
218
  version_requirements: !ruby/object:Gem::Requirement
249
- none: false
250
219
  requirements:
251
220
  - - ~>
252
221
  - !ruby/object:Gem::Version
@@ -255,7 +224,7 @@ description: ! 'Taverna Player is a Ruby on Rails plugin to run Taverna Workflow
255
224
  using Taverna Server. Taverna Player surfaces a workflow in three ways: As a Web
256
225
  interface in the browser; As an embeddable widget to be included in any other Web
257
226
  page; As a REST-based Web Service. All three modes provide functionality to fully
258
- configure a workflows inputs; run the workflow on a Taverna Server; collect workflow
227
+ configure a workflow''s inputs; run the workflow on a Taverna Server; collect workflow
259
228
  outputs, logs and messages; and present the results in an appropriate manner.'
260
229
  email:
261
230
  - support@mygrid.org.uk
@@ -264,6 +233,8 @@ extensions: []
264
233
  extra_rdoc_files: []
265
234
  files:
266
235
  - .gitignore
236
+ - .ruby-gemset
237
+ - .ruby-version
267
238
  - .travis.yml
268
239
  - CHANGES.rdoc
269
240
  - Gemfile
@@ -291,10 +262,10 @@ files:
291
262
  - app/views/taverna_player/runs/_info.html.erb
292
263
  - app/views/taverna_player/runs/_info.json.jbuilder
293
264
  - app/views/taverna_player/runs/_inputs.html.erb
294
- - app/views/taverna_player/runs/_inputs.json.jbuilder
295
265
  - app/views/taverna_player/runs/_interaction.html.erb
296
266
  - app/views/taverna_player/runs/_outputs.html.erb
297
267
  - app/views/taverna_player/runs/_poll.html.erb
268
+ - app/views/taverna_player/runs/_port.json.jbuilder
298
269
  - app/views/taverna_player/runs/create.json.jbuilder
299
270
  - app/views/taverna_player/runs/embedded/_button.html.erb
300
271
  - app/views/taverna_player/runs/embedded/_info.html.erb
@@ -378,6 +349,7 @@ files:
378
349
  - lib/taverna_player/concerns/utils.rb
379
350
  - lib/taverna_player/concerns/zip.rb
380
351
  - lib/taverna_player/engine.rb
352
+ - lib/taverna_player/extras/paperclip-spoofing-fix.rb
381
353
  - lib/taverna_player/model_proxy.rb
382
354
  - lib/taverna_player/port_renderer.rb
383
355
  - lib/taverna_player/render_callbacks.rb
@@ -463,6 +435,7 @@ files:
463
435
  - test/dummy/test/functional/workflows_controller_test.rb
464
436
  - test/dummy/tmp/.gitkeep
465
437
  - test/fixtures/files/non-ascii.csv
438
+ - test/fixtures/files/plain-text.bad-extension
466
439
  - test/fixtures/taverna_player/interactions.yml
467
440
  - test/fixtures/taverna_player/run_ports.yml
468
441
  - test/fixtures/taverna_player/runs.yml
@@ -488,33 +461,26 @@ files:
488
461
  homepage: http://www.taverna.org.uk
489
462
  licenses:
490
463
  - BSD
464
+ metadata: {}
491
465
  post_install_message:
492
466
  rdoc_options: []
493
467
  require_paths:
494
468
  - lib
495
469
  required_ruby_version: !ruby/object:Gem::Requirement
496
- none: false
497
470
  requirements:
498
471
  - - ! '>='
499
472
  - !ruby/object:Gem::Version
500
473
  version: '0'
501
- segments:
502
- - 0
503
- hash: 94152040374779137
504
474
  required_rubygems_version: !ruby/object:Gem::Requirement
505
- none: false
506
475
  requirements:
507
476
  - - ! '>='
508
477
  - !ruby/object:Gem::Version
509
478
  version: '0'
510
- segments:
511
- - 0
512
- hash: 94152040374779137
513
479
  requirements: []
514
480
  rubyforge_project:
515
- rubygems_version: 1.8.21
481
+ rubygems_version: 2.2.2
516
482
  signing_key:
517
- specification_version: 3
483
+ specification_version: 4
518
484
  summary: Taverna Player is a rails plugin to run Taverna Workflows.
519
485
  test_files:
520
486
  - test/dummy/Rakefile
@@ -594,6 +560,7 @@ test_files:
594
560
  - test/dummy/test/functional/workflows_controller_test.rb
595
561
  - test/dummy/tmp/.gitkeep
596
562
  - test/fixtures/files/non-ascii.csv
563
+ - test/fixtures/files/plain-text.bad-extension
597
564
  - test/fixtures/taverna_player/interactions.yml
598
565
  - test/fixtures/taverna_player/run_ports.yml
599
566
  - test/fixtures/taverna_player/runs.yml
@@ -1,8 +0,0 @@
1
- json.inputs inputs do |input|
2
- json.name input.name
3
- if input.file.blank?
4
- json.value input.value
5
- else
6
- json.file_uri input.file.url
7
- end
8
- end