tap-server 0.3.0 → 0.4.0
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/History +5 -0
- data/cmd/server.rb +36 -8
- data/lib/tap/controller/rest_routes.rb +77 -0
- data/lib/tap/controller/utils.rb +29 -0
- data/lib/tap/controller.rb +244 -145
- data/lib/tap/controllers/app.rb +97 -55
- data/lib/tap/controllers/data.rb +132 -0
- data/lib/tap/controllers/schema.rb +137 -223
- data/lib/tap/controllers/server.rb +70 -27
- data/lib/tap/server/data.rb +178 -0
- data/lib/tap/server/runner.rb +71 -0
- data/lib/tap/server/server_error.rb +35 -0
- data/lib/tap/server.rb +60 -275
- data/lib/tap/tasks/echo.rb +39 -6
- data/lib/tap/tasks/render.rb +65 -0
- data/public/stylesheets/tap.css +15 -2
- data/views/configurable/_config.erb +1 -0
- data/views/configurable/_configs.erb +28 -0
- data/views/configurable/_flag.erb +2 -0
- data/views/configurable/_list_select.erb +8 -0
- data/views/configurable/_select.erb +6 -0
- data/views/configurable/_switch.erb +2 -0
- data/views/layout.erb +1 -1
- data/views/object/obj.erb +1 -0
- data/views/tap/controllers/app/_action.erb +3 -0
- data/views/tap/controllers/app/build.erb +18 -0
- data/views/tap/controllers/app/enque.erb +13 -0
- data/views/tap/controllers/app/info.erb +20 -7
- data/views/tap/controllers/data/_controls.erb +21 -0
- data/views/tap/controllers/data/_index_entry.erb +1 -0
- data/views/tap/controllers/data/_upload.erb +8 -0
- data/views/tap/controllers/data/entry.erb +8 -0
- data/views/tap/controllers/data/index.erb +14 -0
- data/views/tap/controllers/schema/_build.erb +6 -0
- data/views/tap/controllers/schema/_index_entry.erb +6 -0
- data/views/tap/controllers/schema/entry.erb +135 -0
- data/views/tap/controllers/schema/join.erb +6 -4
- data/views/tap/controllers/schema/task.erb +6 -0
- data/views/tap/controllers/server/access.erb +4 -0
- data/views/tap/controllers/server/admin.erb +21 -0
- data/views/tap/controllers/server/help.erb +23 -0
- data/views/tap/controllers/server/index.erb +43 -3
- data/views/tap/task/input.erb +17 -0
- data/views/tap/tasks/load/input.erb +11 -0
- metadata +35 -17
- data/lib/tap/server_error.rb +0 -34
- data/lib/tap/support/persistence.rb +0 -71
- data/lib/tap/tasks/server.rb +0 -30
- data/views/tap/controllers/app/index.erb +0 -44
- data/views/tap/controllers/schema/config/default.erb +0 -4
- data/views/tap/controllers/schema/config/flag.erb +0 -3
- data/views/tap/controllers/schema/config/switch.erb +0 -6
- data/views/tap/controllers/schema/configurations.erb +0 -27
- data/views/tap/controllers/schema/node.erb +0 -47
- data/views/tap/controllers/schema/preview.erb +0 -3
- data/views/tap/controllers/schema/round.erb +0 -30
- data/views/tap/controllers/schema/schema.erb +0 -28
- data/views/tap/tasks/echo/result.html +0 -1
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tap-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Chiang
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-05-25 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.
|
23
|
+
version: 0.17.0
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rack
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
33
|
+
version: "1.0"
|
34
34
|
version:
|
35
35
|
description:
|
36
36
|
email: simon.a.chiang@gmail.com
|
@@ -45,35 +45,53 @@ extra_rdoc_files:
|
|
45
45
|
files:
|
46
46
|
- cmd/server.rb
|
47
47
|
- lib/tap/controller.rb
|
48
|
+
- lib/tap/controller/rest_routes.rb
|
49
|
+
- lib/tap/controller/utils.rb
|
48
50
|
- lib/tap/controllers/app.rb
|
51
|
+
- lib/tap/controllers/data.rb
|
49
52
|
- lib/tap/controllers/schema.rb
|
50
53
|
- lib/tap/controllers/server.rb
|
54
|
+
- lib/tap/server/runner.rb
|
51
55
|
- lib/tap/server.rb
|
52
|
-
- lib/tap/
|
56
|
+
- lib/tap/server/data.rb
|
57
|
+
- lib/tap/server/server_error.rb
|
53
58
|
- lib/tap/tasks/echo.rb
|
54
|
-
- lib/tap/tasks/
|
55
|
-
- lib/tap/support/persistence.rb
|
59
|
+
- lib/tap/tasks/render.rb
|
56
60
|
- public/javascripts/prototype.js
|
57
61
|
- public/javascripts/tap.js
|
58
62
|
- public/stylesheets/tap.css
|
59
63
|
- tap.yml
|
60
64
|
- views/404.erb
|
61
65
|
- views/500.erb
|
66
|
+
- views/configurable/_config.erb
|
67
|
+
- views/configurable/_configs.erb
|
68
|
+
- views/configurable/_flag.erb
|
69
|
+
- views/configurable/_list_select.erb
|
70
|
+
- views/configurable/_select.erb
|
71
|
+
- views/configurable/_switch.erb
|
62
72
|
- views/layout.erb
|
63
|
-
- views/
|
73
|
+
- views/object/obj.erb
|
74
|
+
- views/tap/controllers/app/_action.erb
|
75
|
+
- views/tap/controllers/app/build.erb
|
76
|
+
- views/tap/controllers/app/enque.erb
|
64
77
|
- views/tap/controllers/app/info.erb
|
65
78
|
- views/tap/controllers/app/tail.erb
|
66
|
-
- views/tap/controllers/
|
67
|
-
- views/tap/controllers/
|
68
|
-
- views/tap/controllers/
|
69
|
-
- views/tap/controllers/
|
79
|
+
- views/tap/controllers/data/_controls.erb
|
80
|
+
- views/tap/controllers/data/_index_entry.erb
|
81
|
+
- views/tap/controllers/data/_upload.erb
|
82
|
+
- views/tap/controllers/data/entry.erb
|
83
|
+
- views/tap/controllers/data/index.erb
|
84
|
+
- views/tap/controllers/schema/_build.erb
|
85
|
+
- views/tap/controllers/schema/_index_entry.erb
|
70
86
|
- views/tap/controllers/schema/join.erb
|
71
|
-
- views/tap/controllers/schema/
|
72
|
-
- views/tap/controllers/schema/
|
73
|
-
- views/tap/controllers/
|
74
|
-
- views/tap/controllers/
|
87
|
+
- views/tap/controllers/schema/entry.erb
|
88
|
+
- views/tap/controllers/schema/task.erb
|
89
|
+
- views/tap/controllers/server/access.erb
|
90
|
+
- views/tap/controllers/server/admin.erb
|
91
|
+
- views/tap/controllers/server/help.erb
|
75
92
|
- views/tap/controllers/server/index.erb
|
76
|
-
- views/tap/
|
93
|
+
- views/tap/task/input.erb
|
94
|
+
- views/tap/tasks/load/input.erb
|
77
95
|
- README
|
78
96
|
- MIT-LICENSE
|
79
97
|
- History
|
data/lib/tap/server_error.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module Tap
|
2
|
-
|
3
|
-
# A special type of error used for specifiying controller errors.
|
4
|
-
class ServerError < RuntimeError
|
5
|
-
class << self
|
6
|
-
|
7
|
-
# A helper to format a non-ServerError into a ServerError response.
|
8
|
-
def response(err)
|
9
|
-
new("500 #{err.class}: #{err.message}\n#{err.backtrace.join("\n")}").response
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
# The error status
|
14
|
-
attr_reader :status
|
15
|
-
|
16
|
-
# Headers for the error response
|
17
|
-
attr_reader :headers
|
18
|
-
|
19
|
-
# The error response body
|
20
|
-
attr_reader :body
|
21
|
-
|
22
|
-
def initialize(body="500 Server Error", status=500, headers={'Content-Type' => ['text/plain']})
|
23
|
-
@body = body
|
24
|
-
@status = status
|
25
|
-
@headers = headers
|
26
|
-
super(body)
|
27
|
-
end
|
28
|
-
|
29
|
-
# Formats self as a rack response array (ie [status, headers, body]).
|
30
|
-
def response
|
31
|
-
[status, headers, [body]]
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
module Tap
|
2
|
-
module Support
|
3
|
-
|
4
|
-
# A very simple wrapper for root providing a CRUD interface for reading and
|
5
|
-
# writing files.
|
6
|
-
class Persistence
|
7
|
-
|
8
|
-
# The Tap::Root for self.
|
9
|
-
attr_reader :root
|
10
|
-
|
11
|
-
# Initializes a new persistence wrapper for the specified root.
|
12
|
-
def initialize(root)
|
13
|
-
@root = root
|
14
|
-
end
|
15
|
-
|
16
|
-
# Returns the filepath for the specified id. Non-string ids are allowed;
|
17
|
-
# they will be converted to strings using to_s.
|
18
|
-
def path(id)
|
19
|
-
root.subpath(:data, id.to_s)
|
20
|
-
end
|
21
|
-
|
22
|
-
# Returns a list of existing ids.
|
23
|
-
def index
|
24
|
-
root.glob(:data).select do |path|
|
25
|
-
File.file?(path)
|
26
|
-
end.collect do |path|
|
27
|
-
root.relative_filepath(:data, path)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# Creates the file for the specified id. If a block is given, an io to
|
32
|
-
# the file will be yielded to it; otherwise the file will be created
|
33
|
-
# without content. Returns the path to the persistence file.
|
34
|
-
#
|
35
|
-
# Raises an error if the file already exists.
|
36
|
-
def create(id)
|
37
|
-
filepath = path(id)
|
38
|
-
raise "already exists: #{filepath}" if File.exists?(filepath)
|
39
|
-
root.prepare(filepath) {|io| yield(io) if block_given? }
|
40
|
-
end
|
41
|
-
|
42
|
-
# Reads and returns the data for the specified id, or an empty string if
|
43
|
-
# the persistence file doesn't exist.
|
44
|
-
def read(id)
|
45
|
-
filepath = path(id)
|
46
|
-
File.file?(filepath) ? File.read(filepath) : ''
|
47
|
-
end
|
48
|
-
|
49
|
-
# Overwrites the data for the specified id. A block must be given to
|
50
|
-
# provide the new content; a persistence file will be created if one
|
51
|
-
# does not exist already.
|
52
|
-
def update(id)
|
53
|
-
root.prepare(path(id)) {|io| yield(io) }
|
54
|
-
end
|
55
|
-
|
56
|
-
# Removes the persistence file for id, if it exists. Returns true if
|
57
|
-
# the file was removed.
|
58
|
-
def destroy(id)
|
59
|
-
filepath = path(id)
|
60
|
-
|
61
|
-
if File.file?(filepath)
|
62
|
-
FileUtils.rm(filepath)
|
63
|
-
true
|
64
|
-
else
|
65
|
-
false
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
data/lib/tap/tasks/server.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'tap/server'
|
2
|
-
|
3
|
-
module Tap
|
4
|
-
module Tasks
|
5
|
-
|
6
|
-
# ::manifest
|
7
|
-
class Server < Tap::Task
|
8
|
-
|
9
|
-
nest(:env, Tap::Env) do |config|
|
10
|
-
case config
|
11
|
-
when Tap::Env then config
|
12
|
-
else Tap::Env.new(config)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
nest_attr(:server, Tap::Server) do |config|
|
17
|
-
@server = Tap::Server.new(env, config)
|
18
|
-
end
|
19
|
-
|
20
|
-
def process(method='get', uri="/")
|
21
|
-
uri = URI(uri[0] == ?/ ? uri : "/#{uri}")
|
22
|
-
uri.host ||= server.host
|
23
|
-
uri.port ||= server.port
|
24
|
-
|
25
|
-
mock = Rack::MockRequest.new(server)
|
26
|
-
mock.request(method, uri.to_s)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
<div id="branding">
|
2
|
-
<h1><a href="<%= Tap::WEBSITE %>">Tap (<ins>T</ins>ask <ins>Ap</ins>plication) <%= Tap::VERSION %> </a></h1>
|
3
|
-
</div>
|
4
|
-
|
5
|
-
<div id="content_main">
|
6
|
-
<dl id="envs" class="manifest">
|
7
|
-
<% env.each do |current| %>
|
8
|
-
<dt class="key"><%= env_names[current] %> (<%= current.root.root %>)</dt>
|
9
|
-
<dd class="value">
|
10
|
-
<% controllers = current.controllers.build %>
|
11
|
-
<% unless controllers.empty? %>
|
12
|
-
<dl id="controllers" class="manifest">
|
13
|
-
<!-- controllers manifest -->
|
14
|
-
<dt class="key">controllers</dt>
|
15
|
-
<dd class="value">
|
16
|
-
<ol>
|
17
|
-
<% controllers.minimap.each do |(name, obj)| %>
|
18
|
-
<% path = obj.kind_of?(Tap::Support::Constant) ? obj.require_path : name %>
|
19
|
-
<li><a href="/<%= env_names[current] %>%3A<%= name %>"><%= name %></a> (<%= current.root.relative_filepath(:root, path) || path %>)</li>
|
20
|
-
<% end %>
|
21
|
-
</ol>
|
22
|
-
</dd>
|
23
|
-
</dl>
|
24
|
-
<% end %>
|
25
|
-
|
26
|
-
<% tascs = current.tasks.build %>
|
27
|
-
<% unless tascs.empty? %>
|
28
|
-
<dl id="tascs" class="manifest">
|
29
|
-
<!-- tasks manifest -->
|
30
|
-
<dt class="key">tasks</dt>
|
31
|
-
<dd class="value">
|
32
|
-
<ol>
|
33
|
-
<% tascs.minimap.each do |(name, obj)| %>
|
34
|
-
<% path = obj.kind_of?(Tap::Support::Constant) ? obj.require_path : name %>
|
35
|
-
<li><a href="/schema?nodes[0][0]=<%= env_names[current] %>%3A<%= name %>"><%= name %></a> (<%= current.root.relative_filepath(:root, path) || path %>)</li>
|
36
|
-
<% end %>
|
37
|
-
</ol>
|
38
|
-
</dd>
|
39
|
-
</dl>
|
40
|
-
<% end %>
|
41
|
-
</dd>
|
42
|
-
<% end %>
|
43
|
-
</dl>
|
44
|
-
</div>
|
@@ -1,6 +0,0 @@
|
|
1
|
-
<!-- note switches should be more like a radio button, hide
|
2
|
-
the other when selected, so that both are allowed... or
|
3
|
-
just present the opposite of the default... Currently they DO NOT WORK-->
|
4
|
-
<input name="argv[]" type="checkbox" value="<%= switch %>" <%= value ? 'checked="true"' : '' %> />
|
5
|
-
<span><%= key %></span>:
|
6
|
-
<span><%= config[:desc].to_s %></span>
|
@@ -1,27 +0,0 @@
|
|
1
|
-
<% configurations.each_pair do |key, config| %>
|
2
|
-
<li class="config">
|
3
|
-
<% if config.is_nest? %>
|
4
|
-
<span class="name"><%= key %></span>:
|
5
|
-
<span class="desc"><%= config[:desc].to_s %></span>
|
6
|
-
<ul class="nested_config">
|
7
|
-
<%= render("configurations.erb", :locals => {
|
8
|
-
:configurations => config.default(false).delegates,
|
9
|
-
:values => values[key],
|
10
|
-
:nest => "#{nest}#{nest.empty? ? '' : ':'}#{key}",
|
11
|
-
:index => index}) %>
|
12
|
-
</ul>
|
13
|
-
<% else %>
|
14
|
-
<% template = case config[:type] %>
|
15
|
-
<% when :switch then 'switch' %>
|
16
|
-
<% when :flag then 'flag' %>
|
17
|
-
<% else 'default' %>
|
18
|
-
<% end %>
|
19
|
-
<%= render("config/#{template}.erb", :locals => {
|
20
|
-
:key => key,
|
21
|
-
:config => config,
|
22
|
-
:switch => "--#{nest}#{nest.empty? ? '' : ':'}#{key.to_s.gsub('_', '-')}",
|
23
|
-
:value => values[key],
|
24
|
-
:index => index}) %>
|
25
|
-
</li>
|
26
|
-
<% end %>
|
27
|
-
<% end %>
|
@@ -1,47 +0,0 @@
|
|
1
|
-
<% task, args = instantiate(*node.argv) %>
|
2
|
-
<% tasc = task.class %>
|
3
|
-
<span class="class"><%= tasc %></span>:
|
4
|
-
<span class="summary"><%= tasc.manifest.subject %></span>
|
5
|
-
<pre><%= tasc.manifest.wrap %></pre>
|
6
|
-
|
7
|
-
<!-- tasc identifier -->
|
8
|
-
<input name="argv[]" type="hidden" value="--" />
|
9
|
-
<input name="argv[]" type="hidden" value="<%= node.argv[0] %>" />
|
10
|
-
|
11
|
-
<ul>
|
12
|
-
<!-- inputs -->
|
13
|
-
<% attributes = node.input_join ? "disabled='true' ": " " %>
|
14
|
-
<% tasc.args.arguments.each do |argument| %>
|
15
|
-
<li class="input">
|
16
|
-
<input name="argv[]" <%= attributes %>value="<%= args.shift %>" />
|
17
|
-
<span><%= argument %></span>
|
18
|
-
</li>
|
19
|
-
<% end %>
|
20
|
-
<!-- for extra args... should be limited to *arg -->
|
21
|
-
<% args << '' %>
|
22
|
-
<% args.each do |arg| %>
|
23
|
-
<li class="input">
|
24
|
-
<input name="argv[]" <%= attributes %>value="<%= arg %>" />
|
25
|
-
<span>...</span>
|
26
|
-
</li>
|
27
|
-
<% end %>
|
28
|
-
|
29
|
-
<!-- configurations -->
|
30
|
-
<%= render("configurations.erb", :locals => {
|
31
|
-
:configurations => tasc.configurations,
|
32
|
-
:values => task.config,
|
33
|
-
:nest => "",
|
34
|
-
:index => index}) %>
|
35
|
-
|
36
|
-
<!-- options -->
|
37
|
-
<li class="options">
|
38
|
-
<input name="argv[]" type="hidden" value="--name" />
|
39
|
-
<input name="argv[]" value="<%= task.name %>" />
|
40
|
-
<span>Name</span>
|
41
|
-
</li>
|
42
|
-
|
43
|
-
<!--
|
44
|
-
<input class="globalize" name="nodes[<%= index %>][2]" type="checkbox" value="--*<%= index %>" />
|
45
|
-
<span class="name">Globalize</span> -->
|
46
|
-
|
47
|
-
</ul>
|
@@ -1,30 +0,0 @@
|
|
1
|
-
<form id="update_<%= id %>" class="update_form" enctype="multipart/form-data" method="post" action="/schema/update/<%= id %>">
|
2
|
-
<span>round <%= round %></span>
|
3
|
-
<input name="round" type="hidden" value="<%= round %>">
|
4
|
-
<ol>
|
5
|
-
<% nodes.each do |node| %>
|
6
|
-
<% index = schema.index(node) %>
|
7
|
-
<li>
|
8
|
-
<input name="outputs[]" value="<%= index %>" type="checkbox" />
|
9
|
-
<a href="#node_<%= index %>"><%= index %></a>
|
10
|
-
<input name="inputs[]" value="<%= index %>" type="checkbox" />
|
11
|
-
<%= render('join.erb', :locals => {:schema => schema, :id => id, :nodes => node.parents}) %>
|
12
|
-
<%= render('join.erb', :locals => {:schema => schema, :id => id, :nodes => node.children}) %>
|
13
|
-
</li>
|
14
|
-
<% end %>
|
15
|
-
</ol>
|
16
|
-
<ul>
|
17
|
-
<% server.env.minimap.each do |(env_name, env)| %>
|
18
|
-
<% env.tasks.build.minimap.each do |(name, const)| %>
|
19
|
-
<% lookup = "#{env_name}:#{name}" %>
|
20
|
-
<li>
|
21
|
-
<input name="nodes[]" value="<%= lookup %>" type="checkbox"><%= lookup %></input>
|
22
|
-
</li>
|
23
|
-
<% end %>
|
24
|
-
<% end %>
|
25
|
-
</ul>
|
26
|
-
<input class="update_action" type="radio" name="action" value="add" checked="true">add</input>
|
27
|
-
<input class="update_action" type="radio" name="action" value="remove">remove</input>
|
28
|
-
<input class="update_action" type="radio" name="action" value="echo">echo</input>
|
29
|
-
<input id="update_form_submit" type="submit" value="Update" />
|
30
|
-
</form>
|
@@ -1,28 +0,0 @@
|
|
1
|
-
<% globals = schema.globals %>
|
2
|
-
<% unless globals.empty? %>
|
3
|
-
<%= render 'round.erb', :locals => {:schema => schema, :nodes => globals, :round => nil, :id => id} %>
|
4
|
-
<% end %>
|
5
|
-
<% index = 0 %>
|
6
|
-
<% schema.natural_rounds.each do |nodes| %>
|
7
|
-
<%= render 'round.erb', :locals => {:schema => schema, :nodes => nodes, :round => index, :id => id} %>
|
8
|
-
<% index += 1 %>
|
9
|
-
<% end %>
|
10
|
-
<%= render 'round.erb', :locals => {:schema => schema, :nodes => [], :round => index, :id => id} %>
|
11
|
-
|
12
|
-
<form id="submit_form_<%= id %>" class="submit_form" enctype="multipart/form-data" method="post" action="/schema/submit/<%= id %>">
|
13
|
-
<ol id="schema_<%= id %>" class="schema">
|
14
|
-
<% schema.nodes.each_with_index do |node, index| %>
|
15
|
-
<li id="node_<%= index %>" class="node">
|
16
|
-
<%= render('node.erb', :locals => {:id => id, :node => node, :index => index} ) %>
|
17
|
-
</li>
|
18
|
-
<% end %>
|
19
|
-
</ol>
|
20
|
-
<% schema.dump.select {|obj| !obj.kind_of?(Array) }.each do |str| %>
|
21
|
-
<input name="argv[]" type="hidden" value="--<%= str %>" />
|
22
|
-
<% end %>
|
23
|
-
<input class="submit_form_action" type="radio" name="action" value="save" checked="true">save</input>
|
24
|
-
<input class="submit_form_action" type="radio" name="action" value="preview">preview</input>
|
25
|
-
<input class="submit_form_action" type="radio" name="action" value="echo">echo</input>
|
26
|
-
<input class="submit_form_action" type="radio" name="action" value="run">run</input>
|
27
|
-
<input id="submit_form_submit" type="submit" value="Submit" />
|
28
|
-
</form>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= _result.dump %>
|