lib/experiment/runner.rb in experiment-0.3.0 vs lib/experiment/runner.rb in experiment-0.3.1
- old
+ new
@@ -31,13 +31,14 @@
req_file.puts
req_file.puts
req_file.puts "# The first contious block of comment will be included in your report."
req_file.puts "# This includes the reference implementation."
req_file.puts "# Override any desired files in this directory."
- Dir["./app/**/*.rb"].each do |f|
- p = f.split("/") - File.expand_path(".").split("/")
- req_file.puts "require File.dirname(__FILE__) + \"/../../#{p.join("/")}\""
+ Dir["./app/**/*.{rb,o,dll,so,bundle}"].each do |f|
+ next if File.basename(f) == 'extconfig.rb'
+ p = File.expand_path(f).split("/") - File.expand_path(".").split("/")
+ req_file.puts "require \"#{p.join("/").gsub(/\.(rb|o|dll|so|bundle)$/, "")}\""
end
req_file.puts "\nclass #{as_class_name @arguments.first} < MyExperiment\n\t\nend"
end
File.open(dir + "/config.yaml", "w") do |f|
f << "---\nexperiment:\n development:\n compute:\n"
@@ -123,10 +124,11 @@
# use the -o option to override configuration
def run
require File.dirname(__FILE__) + "/base"
require "./experiments/experiment"
+ $: << "./"
Experiment::Config::init @options.env
@options.cv = Experiment::Config.get :cross_validations, 5 if @options.cv.nil?
if @options.distributed
require "drb/drb"
require File.dirname(__FILE__) + "/work_server"
@@ -134,11 +136,11 @@
Notify::init @arguments.length * @options.cv, STDOUT, Experiment::Config::get(:growl_notifications, true)
ws = WorkServer.new @arguments, @options, local_ip
Notify::done
return true
else
- Notify::init @arguments.length * @options.cv, STDOUT, Experiment::Config::get(:growl_notifications, true)
+ Notify::init @arguments.length * @options.cv, @options.quiet ? false : STDERR, Experiment::Config::get(:growl_notifications, !@options.quiet)
@arguments.each do |exp|
require "./experiments/#{exp}/#{exp}"
cla = eval(as_class_name(exp))
experiment = cla.new :normal, exp, @options
experiment.normal_run! @options.cv
@@ -150,29 +152,28 @@
# Creates an IRB console useful for debugging experiments
# Loads up the environment for the condition passed
def console
cla = as_class_name(@arguments.first) if @arguments.length == 1
File.open("./tmp/irb-setup.rb", 'w') do |f|
+ f.puts "# Initializes the environment for IRb."
f.puts "Experiment::Config::init #{@options.env.inspect}"
- f.puts "def reload!"
- f.puts " "
- f.puts "end"
+ f.puts "$: << '#{File.expand_path(".")}/'"
if @arguments.length == 1
+ f.puts "require 'experiments/#{@arguments.first}/#{@arguments.first}'"
f.puts "def experiment"
f.puts " @experiment ||= #{cla}.new :normal, #{@arguments.first.inspect}, OpenStruct.new(#{@options.marshal_dump})"
f.puts "end"
f.puts "experiment #load up the configs"
else
- f.puts 'Dir["./app/*.rb"].each{|e| require e }'
+ f.puts 'Dir["./app/**/*.{rb,o,so,dll,bundle}"].each{|e| require e.gsub(/\.(rb|so|o|dll|bundle)$/, "") }'
f.puts "Experiment::Config::load '', #{options.opts.inspect}"
end
end
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
libs = " -r irb/completion"
libs << " -r #{File.dirname(__FILE__) + "/base"}"
libs << " -r./experiments/experiment"
- libs << " -r ./experiments/#{@arguments.first}/#{@arguments.first}" if @arguments.length == 1
libs << " -r ./tmp/irb-setup.rb"
puts "Loading #{@options.env} environment..."
exec "#{irb} #{libs} --simple-prompt"
end