Skip to content

Instantly share code, notes, and snippets.

@airhorns
Created September 1, 2011 19:15
Show Gist options
  • Select an option

  • Save airhorns/1186997 to your computer and use it in GitHub Desktop.

Select an option

Save airhorns/1186997 to your computer and use it in GitHub Desktop.
require 'hashr'
module Travis
module Worker
module Builders
class << self
def builder_for(config)
lang = camelize(config.language || Travis::Worker.config.default_language || 'ruby')
case lang
when "JavascriptWithNodejs"
Travis::Worker::Builders::NodeJs
else
args = [lang]
args << false if Kernel.method(:const_get).arity == -1
Travis::Worker::Builders.const_get(*args)
end
end
private
def camelize(lower_case_and_underscored_word)
lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
end
end
autoload :Base, 'travis/worker/builders/base'
autoload :Clojure, 'travis/worker/builders/clojure'
autoload :Erlang, 'travis/worker/builders/erlang'
autoload :Ruby, 'travis/worker/builders/ruby'
autoload :NodeJs, 'travis/worker/builders/node_js'
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment