Class: Micron::Runner::Shim
- Inherits:
-
Object
- Object
- Micron::Runner::Shim
- Defined in:
- lib/micron/runner/shim.rb
Class Method Summary collapse
-
.cleanup! ⇒ Object
Clean up any existing shim dirs.
-
.setup ⇒ Object
Create a temp shim path.
-
.wrap(&block) ⇒ Object
Wrap the given call with our shim PATH.
Class Method Details
.cleanup! ⇒ Object
Clean up any existing shim dirs. This should be called only when the master process exists (i.e. Micron::App)
44 45 46 47 48 49 |
# File 'lib/micron/runner/shim.rb', line 44 def self.cleanup! # return Dir.glob(File.join(Dir.tmpdir, "micron-shim-*")).each do |d| FileUtils.rm_rf(d) end end |
.setup ⇒ Object
Create a temp shim path
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/micron/runner/shim.rb', line 9 def self.setup ruby_path = `which ruby`.strip shim = "#!\#{ruby_path}\n\nif ENV[\"BUNDLE_GEMFILE\"] then\n require \"bundler\"\n Bundler.setup(:default, :development, :test)\nend\n\nrequire \"easycov\"\n\nEasyCov.path = ENV[\"EASYCOV_PATH\"]\nEasyCov.filters << EasyCov::IGNORE_GEMS << EasyCov::IGNORE_STDLIB\nEasyCov.start\nEasyCov.install_exit_hook()\n\nscript = ARGV.shift\n$0 = script\nrequire script\n" @shim_dir = Dir.mktmpdir("micron-shim-") file = File.join(@shim_dir, "ruby") File.open(file, 'w') do |f| f.write(shim) end File.chmod(0777, file) EasyCov::Filters.stdlib_paths # make sure this gets cached in env end |
.wrap(&block) ⇒ Object
Wrap the given call with our shim PATH. Any calls to ruby will be redirected to our script to enable coverage collection.
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/micron/runner/shim.rb', line 53 def self.wrap(&block) # enable shim ENV["EASYCOV_PATH"] = EasyCov.path old_path = ENV["PATH"] ENV["PATH"] = "#{@shim_dir}:#{old_path}" # call orig method block.call() # disable shim ENV["PATH"] = old_path end |