module Rakeleak
Constants
- VERSION
Public Class Methods
run(params)
click to toggle source
# File lib/rakeleak.rb, line 8 def self.run(params) task_name = params[:id] Rake::Task[task_name].reenable task = -> { capture_stdout { Rake::Task[task_name].invoke(*args(params)) } } if params[:env].present? && (params[:env] =~ /\A\S+\s*=\s*.+/) == 0 with_env(params[:env]) { task.call } else task.call end end
tasks()
click to toggle source
# File lib/rakeleak.rb, line 4 def self.tasks Rake::Task.tasks end
Private Class Methods
args(params)
click to toggle source
# File lib/rakeleak.rb, line 45 def self.args(params) Rake::Task[params[:id]].arg_names.map{|arg| params[arg] }.reject(&:nil?) end
capture_stdout() { || ... }
click to toggle source
# File lib/rakeleak.rb, line 32 def self.capture_stdout stdout = $stdout trap = StringIO.new $stdout = trap $stdout.sync = true yield if block_given? trap.string ensure $stdout = stdout end
with_env(env) { || ... }
click to toggle source
# File lib/rakeleak.rb, line 22 def self.with_env(env) key, value = env.strip.split(/\s*=\s*/) prev_value = ENV[key] ENV[key] = value yield ensure prev_value.nil? ? ENV.delete(key) : ENV[key] = prev_value end