coderunner 0.17.3 → 0.17.4
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/coderunner.gemspec +5 -7
- data/lib/coderunner.rb +2 -2
- data/lib/coderunner/class_methods.rb +2 -2
- data/lib/coderunner/instance_methods.rb +34 -35
- data/lib/coderunner/system_modules/generic_linux.rb +74 -79
- metadata +58 -32
- checksums.yaml +0 -7
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.17.
|
1
|
+
0.17.4
|
data/coderunner.gemspec
CHANGED
@@ -2,17 +2,14 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: coderunner 0.17.3 ruby lib
|
6
|
-
# stub: ext/extconf.rb
|
7
5
|
|
8
6
|
Gem::Specification.new do |s|
|
9
7
|
s.name = "coderunner"
|
10
|
-
s.version = "0.17.
|
8
|
+
s.version = "0.17.4"
|
11
9
|
|
12
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
13
|
-
s.require_paths = ["lib"]
|
14
11
|
s.authors = ["Edmund Highcock"]
|
15
|
-
s.date = "2015-09-
|
12
|
+
s.date = "2015-09-10"
|
16
13
|
s.description = "CodeRunner is a framework for the automated running and analysis of simulations. It automatically generates any necessary input files, organises the output data and analyses it. Because it is a modular system, it can easily be customised to work with any system and any simulation code. One of its greatest strengths is that it is independent of any one simulation code; thus it can easily plot and compare the data from different codes."
|
17
14
|
s.email = "edmundhighcock@sourceforge.net"
|
18
15
|
s.executables = ["coderunner", "coderunnerrepo"]
|
@@ -97,13 +94,14 @@ Gem::Specification.new do |s|
|
|
97
94
|
]
|
98
95
|
s.homepage = "http://coderunner.sourceforge.net"
|
99
96
|
s.licenses = ["GPLv3"]
|
97
|
+
s.require_paths = ["lib"]
|
100
98
|
s.required_ruby_version = Gem::Requirement.new(">= 1.9.1")
|
101
99
|
s.rubyforge_project = "coderunner"
|
102
|
-
s.rubygems_version = "
|
100
|
+
s.rubygems_version = "1.8.23"
|
103
101
|
s.summary = "A framework for the automated running and analysis of simulations."
|
104
102
|
|
105
103
|
if s.respond_to? :specification_version then
|
106
|
-
s.specification_version =
|
104
|
+
s.specification_version = 3
|
107
105
|
|
108
106
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
109
107
|
s.add_runtime_dependency(%q<graphkit>, [">= 0.4.2"])
|
data/lib/coderunner.rb
CHANGED
@@ -201,13 +201,13 @@ EOF
|
|
201
201
|
COMMANDS_WITH_HELP = [
|
202
202
|
["available_modlets", "av", 0, 'List the available modlets for the code module.', [], [:C]],
|
203
203
|
["available_defaults_files", "avd", 0, 'List the defaults files for the code module.', [], [:C]],
|
204
|
-
["cancel", "can",
|
204
|
+
["cancel", "can", 0, 'Cancel the specified job.', [], [:j, :f, :U, :N]],
|
205
205
|
["code_command", "cc", 1, 'Call a class method of the run class. Effectively this will call run_class.class_eval(command). See documentation for whichever code module is in use.', ['command'], []],
|
206
206
|
["concat", "concat", 1, 'Concatenates NetCDF output files together. File is output in the CR root directory.', ['output file'], [:j, :f, :U, :N]],
|
207
207
|
["continue_in_new_folder", "cnf", 1, 'Make a new folder in the parent directory and copy all coderunner configuration files to that folder. If options j or f are specified, copy all matching runs to that new folder.', ['folder'], [:j, :f, :U, :N]],
|
208
208
|
["code_runner_execute", "crex", 1, 'Run (within the CodeRunner class) the fragment of Ruby code given.', ['Ruby fragment'], []],
|
209
209
|
["delete", "del", 0, 'Permanently erase all filtered runs.', [], [:j, :F, :U, :N]],
|
210
|
-
["differences_between", "diff", 0, 'Print a table of all the differences between the input parameters of the filtered ids.', [], [:j, :
|
210
|
+
["differences_between", "diff", 0, 'Print a table of all the differences between the input parameters of the filtered ids.', [], [:j, :f, :U, :N]],
|
211
211
|
["directory", "dir", 1, 'Print out the directory for the given run.', ['id'], []],
|
212
212
|
['dumb_film', "dfm", 0, 'Create a film of the specified graphkits using gnuplot "dumb" ASCII terminal.', [], [:F, :G, :g, :U, :N, :j, :f]],
|
213
213
|
["execute", "ex", 1, 'Run (at the top level) the fragment of Ruby code given.', ['Ruby fragment'], []],
|
@@ -62,9 +62,9 @@ class CodeRunner
|
|
62
62
|
# Cancel the job with the given id. The user is asked interactively for
|
63
63
|
# confirmation and whether they would like to delete the folder for that job
|
64
64
|
# as well.
|
65
|
-
def self.cancel(
|
65
|
+
def self.cancel(copts={})
|
66
66
|
runner = fetch_runner(copts)
|
67
|
-
runner.cancel_job(
|
67
|
+
runner.cancel_job(copts)
|
68
68
|
end
|
69
69
|
|
70
70
|
def self.continue_in_new_folder(folder, copts={})
|
@@ -1558,20 +1558,20 @@ EOF
|
|
1558
1558
|
# Delete the folders of all runs for whom CodeRunner#filter(run) is true. This will permanently erase the runs. This is an interactive method which asks for confirmation.
|
1559
1559
|
|
1560
1560
|
def destroy(options={})
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
|
1568
|
-
|
1569
|
-
|
1570
|
-
|
1571
|
-
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1561
|
+
ids = @ids.find_all{|id| filter @run_list[id]}
|
1562
|
+
unless options[:no_confirm]
|
1563
|
+
logf(:destroy)
|
1564
|
+
puts "About to delete:"
|
1565
|
+
ids.each{|id| eputs @run_list[id].run_name}
|
1566
|
+
return unless Feedback.get_boolean("You are about to DESTROY #{ids.size} jobs. There is no way back. All data will be eliminated. Please confirm the delete.")
|
1567
|
+
eputs "Please confirm again. Press Enter to confirm, Ctrl + C to cancel"
|
1568
|
+
gets
|
1569
|
+
end
|
1570
|
+
ids.each{|id|
|
1571
|
+
@run_list[id].clear_cache
|
1572
|
+
FileUtils.rm_r @run_list[id].directory if @run_list[id].directory and not ["", ".", ".."].include? @run_list[id].directory
|
1573
|
+
@run_list.delete(id); @ids.delete(id); generate_combined_ids
|
1574
|
+
}
|
1575
1575
|
if is_in_repo?
|
1576
1576
|
repo = Repository.open_in_subfolder(@root_folder)
|
1577
1577
|
Dir.chdir(@root_folder){
|
@@ -1579,36 +1579,35 @@ EOF
|
|
1579
1579
|
}
|
1580
1580
|
repo.autocommit("Deleted simulations with ids #{ids} in folder #{repo.relative_path(@root_folder)}")
|
1581
1581
|
end
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1582
|
+
set_max_id(@ids.max || 0)
|
1583
|
+
save_large_cache
|
1584
|
+
generate_combined_ids
|
1585
1585
|
end
|
1586
1586
|
|
1587
1587
|
# Cancel the job with the given ID. Options are:
|
1588
1588
|
# :no_confirm ---> true or false, cancel without asking for confirmation if true
|
1589
1589
|
# :delete ---> if (no_confirm and delete), delete cancelled run
|
1590
1590
|
|
1591
|
-
def cancel_job(
|
1592
|
-
|
1593
|
-
|
1594
|
-
|
1595
|
-
|
1596
|
-
|
1597
|
-
|
1598
|
-
|
1599
|
-
|
1600
|
-
|
1601
|
-
|
1602
|
-
|
1603
|
-
|
1604
|
-
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1591
|
+
def cancel_job(options={})
|
1592
|
+
ids = @ids.find_all{|id| filter @run_list[id]}
|
1593
|
+
|
1594
|
+
unless options[:no_confirm]
|
1595
|
+
puts "About to cancel:"
|
1596
|
+
ids.each{|id| eputs "#{@run_list[id].job_no}: #{@run_list[id].run_name}"}
|
1597
|
+
return unless Feedback.get_boolean("You are about to cancel "\
|
1598
|
+
"#{ids.size} jobs. Please confirm.")
|
1599
|
+
eputs "Please confirm again. Press Enter to confirm, Ctrl + C to cancel"
|
1600
|
+
gets
|
1601
|
+
end
|
1602
|
+
|
1603
|
+
ids.each do |id|
|
1604
|
+
@run_list[id].clear_cache
|
1605
|
+
@run_list[id].cancel_job
|
1606
|
+
generate_combined_ids
|
1607
|
+
end
|
1608
1608
|
end
|
1609
1609
|
|
1610
1610
|
# Needs to be fixed.
|
1611
|
-
|
1612
1611
|
# def rename_variable(old, new)
|
1613
1612
|
# puts "Please confirm complete renaming of #{old} to #{new}"
|
1614
1613
|
# gets
|
@@ -1,91 +1,86 @@
|
|
1
1
|
class CodeRunner
|
2
|
-
require SCRIPT_FOLDER + '/system_modules/launcher.rb'
|
3
|
-
module GenericLinux
|
4
|
-
|
2
|
+
require SCRIPT_FOLDER + '/system_modules/launcher.rb'
|
3
|
+
module GenericLinux
|
4
|
+
include Launcher
|
5
5
|
|
6
|
+
# @@ruby_command = "ruby1.9"
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
if use_launcher
|
11
|
-
queue_status_launcher
|
12
|
-
else
|
13
|
-
if methods.include?(:rcp) and rcp.uses_mpi? and rcp.uses_mpi
|
14
|
-
return %x[ps -e -U #{Process.uid} | grep mpi] + %x[ps -e -U #{Process.uid} | grep -G '\\bsh\\b'] + %x[ps -e -U #{Process.uid} -o pid,user,cmd | grep coderunner].grep(/launch/)
|
8
|
+
def queue_status
|
9
|
+
if use_launcher
|
10
|
+
queue_status_launcher
|
15
11
|
else
|
16
|
-
|
17
|
-
|
12
|
+
if methods.include?(:rcp) and rcp.uses_mpi? and rcp.uses_mpi
|
13
|
+
return %x[ps -e -U #{Process.uid} | grep mpi] + %x[ps -e -U #{Process.uid} | grep -G '\\bsh\\b'] + %x[ps -e -U #{Process.uid} -o pid,user,cmd | grep coderunner].grep(/launch/)
|
14
|
+
else
|
15
|
+
return %x[ps -e -U #{Process.uid} | grep '#{executable_name}'] + %x[ps -e -U #{Process.uid} | grep -G '\\bsh\\b']
|
16
|
+
end
|
18
17
|
end
|
19
18
|
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def run_command
|
23
|
-
crenv = @code_run_environment ? @code_run_environment + ";" : nil
|
24
|
-
if rcp.uses_mpi
|
25
|
-
raise "Number of processors (nprocs) not specified" unless @nprocs
|
26
|
-
return %[#{crenv} time mpirun -np #{@nprocs} #{executable_location}/#{executable_name} #{parameter_string} > #{output_file} 2> #{error_file}]
|
27
|
-
else
|
28
|
-
return %[#{crenv} #{executable_location}/#{executable_name} #{parameter_string} > #{output_file} 2> #{error_file}]
|
29
|
-
end
|
30
|
-
end
|
31
19
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
#
|
37
|
-
|
38
|
-
#
|
39
|
-
|
40
|
-
|
41
|
-
# Thread.new{Process.wait(pid)} # Need to pick up the dead process when it finishes
|
42
|
-
# end
|
43
|
-
# pid = ppipe.w_recv(:pid)
|
44
|
-
# ppipe.die
|
45
|
-
# eputs "HERE"
|
46
|
-
|
47
|
-
# trap(0){}
|
48
|
-
# trap(2, 'IGNORE')
|
49
|
-
# pid = spawn("trap '' 2 && trap '' 0 && " + run_command + " & ")
|
50
|
-
if prefix = ENV['CODE_RUNNER_LAUNCHER']
|
51
|
-
launch_id = "#{Time.now.to_i}#{$$}"
|
52
|
-
fname = CodeRunner.launcher_directory + "/#{launch_id}"
|
53
|
-
File.open(fname + '.start', 'w'){|file| file.puts "cd '#{Dir.pwd}';#{run_command}"}
|
54
|
-
sleep 1 until FileTest.exist? fname + '.pid'
|
55
|
-
pid = File.read(fname + '.pid').to_i
|
56
|
-
FileUtils.rm fname + '.pid'
|
57
|
-
else
|
58
|
-
#pid = Kernel.spawn(run_command + " ")
|
59
|
-
system run_command
|
60
|
-
pid = -1
|
61
|
-
end
|
62
|
-
|
63
|
-
# require 'rbconfig'
|
64
|
-
# pid = spawn %[#{Config::CONFIG['bindir']}/#{Config::CONFIG['ruby_install_name']} -e 'puts fork{exec("#{run_command}")}' &]
|
65
|
-
|
66
|
-
# eputs "THERE"
|
67
|
-
# Thread.new{Process.wait(pid)}
|
68
|
-
# sleep 0.2
|
69
|
-
return pid
|
70
|
-
end
|
20
|
+
def run_command
|
21
|
+
crenv = @code_run_environment ? @code_run_environment + ";" : nil
|
22
|
+
if rcp.uses_mpi
|
23
|
+
raise "Number of processors (nprocs) not specified" unless @nprocs
|
24
|
+
return %[#{crenv} time mpirun -np #{@nprocs} #{executable_location}/#{executable_name} #{parameter_string} > #{output_file} 2> #{error_file}]
|
25
|
+
else
|
26
|
+
return %[#{crenv} #{executable_location}/#{executable_name} #{parameter_string} > #{output_file} 2> #{error_file}]
|
27
|
+
end
|
28
|
+
end
|
71
29
|
|
72
|
-
def
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
#
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
30
|
+
def execute
|
31
|
+
log 'execute_submission'
|
32
|
+
# ppipe = PPipe.new(2, false)
|
33
|
+
# trap(0){}
|
34
|
+
# ppipe.fork do
|
35
|
+
# trap(0, 'IGNORE')
|
36
|
+
# trap(2, 'IGNORE')
|
37
|
+
# pid = system(run_command + " & ") # fork{exec run_command}
|
38
|
+
# ppipe.w_send(:pid, pid, tp: 0)
|
39
|
+
# Thread.new{Process.wait(pid)} # Need to pick up the dead process when it finishes
|
40
|
+
# end
|
41
|
+
# pid = ppipe.w_recv(:pid)
|
42
|
+
# ppipe.die
|
43
|
+
# eputs "HERE"
|
44
|
+
|
45
|
+
# trap(0){}
|
46
|
+
# trap(2, 'IGNORE')
|
47
|
+
# pid = spawn("trap '' 2 && trap '' 0 && " + run_command + " & ")
|
48
|
+
if prefix = ENV['CODE_RUNNER_LAUNCHER']
|
49
|
+
launch_id = "#{Time.now.to_i}#{$$}"
|
50
|
+
fname = CodeRunner.launcher_directory + "/#{launch_id}"
|
51
|
+
File.open(fname + '.start', 'w'){|file| file.puts "cd '#{Dir.pwd}';#{run_command}"}
|
52
|
+
sleep 1 until FileTest.exist? fname + '.pid'
|
53
|
+
pid = File.read(fname + '.pid').to_i
|
54
|
+
FileUtils.rm fname + '.pid'
|
55
|
+
else
|
56
|
+
#pid = Kernel.spawn(run_command + " ")
|
57
|
+
system run_command
|
58
|
+
pid = -1
|
59
|
+
end
|
60
|
+
|
61
|
+
# require 'rbconfig'
|
62
|
+
# pid = spawn %[#{Config::CONFIG['bindir']}/#{Config::CONFIG['ruby_install_name']} -e 'puts fork{exec("#{run_command}")}' &]
|
63
|
+
|
64
|
+
# eputs "THERE"
|
65
|
+
# Thread.new{Process.wait(pid)}
|
66
|
+
# sleep 0.2
|
67
|
+
return pid
|
68
|
+
end
|
84
69
|
|
85
|
-
def
|
86
|
-
|
87
|
-
|
70
|
+
def cancel_job
|
71
|
+
children = `ps --ppid #@job_no`.scan(/^\s*(\d+)/).map{|match| match[0].to_i}
|
72
|
+
system "kill #{@job_no}"
|
73
|
+
children.each do |pid|
|
74
|
+
system "kill #{pid}"
|
75
|
+
end
|
76
|
+
end
|
88
77
|
|
78
|
+
def error_file
|
79
|
+
return "#{executable_name}.#{job_identifier}.e"
|
80
|
+
end
|
89
81
|
|
90
|
-
|
82
|
+
def output_file
|
83
|
+
return "#{executable_name}.#{job_identifier}.o"
|
84
|
+
end
|
85
|
+
end
|
91
86
|
end
|
metadata
CHANGED
@@ -1,181 +1,206 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coderunner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.4
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Edmund Highcock
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
12
|
+
date: 2015-09-10 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: graphkit
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- -
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: 0.4.2
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 0.4.2
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: parallelpipes
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- -
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: 1.0.0
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- -
|
43
|
+
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: 1.0.0
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: rubyhacks
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- -
|
51
|
+
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: 0.1.4
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: 0.1.4
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: rb-gsl
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- -
|
67
|
+
- - ! '>'
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: 1.12.0
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- -
|
75
|
+
- - ! '>'
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: 1.12.0
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: gsl_extras
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- -
|
83
|
+
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: 0.3.0
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- -
|
91
|
+
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: 0.3.0
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: hostmanager
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- -
|
99
|
+
- - ! '>'
|
88
100
|
- !ruby/object:Gem::Version
|
89
101
|
version: 0.1.0
|
90
102
|
type: :runtime
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- -
|
107
|
+
- - ! '>'
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: 0.1.0
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: command-line-flunky
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
|
-
- -
|
115
|
+
- - ! '>'
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: 0.1.0
|
104
118
|
type: :runtime
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
|
-
- -
|
123
|
+
- - ! '>'
|
109
124
|
- !ruby/object:Gem::Version
|
110
125
|
version: 0.1.0
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: git
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
|
-
- -
|
131
|
+
- - ! '>='
|
116
132
|
- !ruby/object:Gem::Version
|
117
133
|
version: 1.2.9
|
118
134
|
type: :runtime
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
|
-
- -
|
139
|
+
- - ! '>='
|
123
140
|
- !ruby/object:Gem::Version
|
124
141
|
version: 1.2.9
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
143
|
name: shoulda
|
127
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
128
146
|
requirements:
|
129
|
-
- -
|
147
|
+
- - ! '>='
|
130
148
|
- !ruby/object:Gem::Version
|
131
149
|
version: '0'
|
132
150
|
type: :development
|
133
151
|
prerelease: false
|
134
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
135
154
|
requirements:
|
136
|
-
- -
|
155
|
+
- - ! '>='
|
137
156
|
- !ruby/object:Gem::Version
|
138
157
|
version: '0'
|
139
158
|
- !ruby/object:Gem::Dependency
|
140
159
|
name: rdoc
|
141
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
142
162
|
requirements:
|
143
|
-
- -
|
163
|
+
- - ~>
|
144
164
|
- !ruby/object:Gem::Version
|
145
165
|
version: '3.12'
|
146
166
|
type: :development
|
147
167
|
prerelease: false
|
148
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
149
170
|
requirements:
|
150
|
-
- -
|
171
|
+
- - ~>
|
151
172
|
- !ruby/object:Gem::Version
|
152
173
|
version: '3.12'
|
153
174
|
- !ruby/object:Gem::Dependency
|
154
175
|
name: bundler
|
155
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
156
178
|
requirements:
|
157
|
-
- -
|
179
|
+
- - ! '>'
|
158
180
|
- !ruby/object:Gem::Version
|
159
181
|
version: 1.0.0
|
160
182
|
type: :development
|
161
183
|
prerelease: false
|
162
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
163
186
|
requirements:
|
164
|
-
- -
|
187
|
+
- - ! '>'
|
165
188
|
- !ruby/object:Gem::Version
|
166
189
|
version: 1.0.0
|
167
190
|
- !ruby/object:Gem::Dependency
|
168
191
|
name: jeweler
|
169
192
|
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
170
194
|
requirements:
|
171
|
-
- -
|
195
|
+
- - ! '>='
|
172
196
|
- !ruby/object:Gem::Version
|
173
197
|
version: 2.0.0
|
174
198
|
type: :development
|
175
199
|
prerelease: false
|
176
200
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
177
202
|
requirements:
|
178
|
-
- -
|
203
|
+
- - ! '>='
|
179
204
|
- !ruby/object:Gem::Version
|
180
205
|
version: 2.0.0
|
181
206
|
description: CodeRunner is a framework for the automated running and analysis of simulations.
|
@@ -195,7 +220,7 @@ extra_rdoc_files:
|
|
195
220
|
- README.md
|
196
221
|
- README.rdoc
|
197
222
|
files:
|
198
|
-
-
|
223
|
+
- .document
|
199
224
|
- Gemfile
|
200
225
|
- LICENSE.txt
|
201
226
|
- README.md
|
@@ -269,25 +294,26 @@ files:
|
|
269
294
|
homepage: http://coderunner.sourceforge.net
|
270
295
|
licenses:
|
271
296
|
- GPLv3
|
272
|
-
metadata: {}
|
273
297
|
post_install_message:
|
274
298
|
rdoc_options: []
|
275
299
|
require_paths:
|
276
300
|
- lib
|
277
301
|
required_ruby_version: !ruby/object:Gem::Requirement
|
302
|
+
none: false
|
278
303
|
requirements:
|
279
|
-
- -
|
304
|
+
- - ! '>='
|
280
305
|
- !ruby/object:Gem::Version
|
281
306
|
version: 1.9.1
|
282
307
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
308
|
+
none: false
|
283
309
|
requirements:
|
284
|
-
- -
|
310
|
+
- - ! '>='
|
285
311
|
- !ruby/object:Gem::Version
|
286
312
|
version: '0'
|
287
313
|
requirements: []
|
288
314
|
rubyforge_project: coderunner
|
289
|
-
rubygems_version:
|
315
|
+
rubygems_version: 1.8.23
|
290
316
|
signing_key:
|
291
|
-
specification_version:
|
317
|
+
specification_version: 3
|
292
318
|
summary: A framework for the automated running and analysis of simulations.
|
293
319
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 554e5c730407b32651cda8ce43cd5453fad35132
|
4
|
-
data.tar.gz: f34ed6190f5f242e748ecfbf24270ae60b92b9a0
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: a1692edb1e21f67c49f4a720e52e2d7b1bf4738f41a9263d61714eec25c35b804ec8a9552d38f312e6400394dc804cfe5832d4ae5edad69501e740a1ca2c1a1d
|
7
|
-
data.tar.gz: 67e773d77563e726b2d0f0f13573532c6a707d37ad76cce08c6ed9bec1ee7850e9783bc6943a9a49be35da6f4144c04eec2ee4828604b2fa99d0994ed492ba71
|