From 9ef6b6f551a34922cfd831e2521495e89afe2f94 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 4 Oct 2010 23:55:31 +0000 Subject: split out isolate usage/logic We'll be using more of Isolate in development. --- script/isolate_for_tests | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 script/isolate_for_tests (limited to 'script') diff --git a/script/isolate_for_tests b/script/isolate_for_tests new file mode 100755 index 0000000..1919289 --- /dev/null +++ b/script/isolate_for_tests @@ -0,0 +1,42 @@ +#!/usr/bin/env ruby +# scripts/Makefiles can read and eval the output of this script and +# use it as RUBYLIB +require 'rubygems' +require 'isolate' +fp = File.open(__FILE__, "rb") +fp.flock(File::LOCK_EX) + +ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby' +opts = { + :system => false, + # we want "ruby-1.8.7" and not "ruby-1.8", so disable :multiruby + :multiruby => false, + :path => "tmp/isolate/#{ruby_engine}-#{RUBY_VERSION}", +} + +pid = fork do + Isolate.now!(opts) do + gem 'sqlite3-ruby', '1.2.5' + gem 'rack', '1.1.0' + end +end +_, status = Process.waitpid2(pid) +status.success? or abort status.inspect +lib_paths = Dir["#{opts[:path]}/gems/*-*/lib"].map { |x| File.expand_path(x) } +libs = "tmp/isolate/.#{ruby_engine}-#{RUBY_VERSION}.libs" +File.open("#{libs}.#$$", "w") { |fp| fp.puts lib_paths.join(':') } +File.rename("#{libs}.#$$", libs) + +# pure Ruby gems can be shared across all Rubies +%w(3.0.0).each do |rails_ver| + opts[:path] = "tmp/isolate/rails-#{rails_ver}" + pid = fork do + Isolate.now!(opts) do + gem 'rails', rails_ver + end + end + _, status = Process.waitpid2(pid) + status.success? or abort status.inspect + more = Dir["#{opts[:path]}/gems/*-*/lib"].map { |x| File.expand_path(x) } + lib_paths.concat(more) +end -- cgit v1.2.3-24-ge0c7