Module: Isolate

Defined in:
lib/isolate.rb,
lib/isolate/entry.rb,
lib/isolate/sandbox.rb

Overview

Restricts GEM_PATH and GEM_HOME and provides a DSL for expressing your code’s runtime Gem dependencies. See README.rdoc for rationale, limitations, and examples.

Defined Under Namespace

Classes: Entry, Sandbox

Constant Summary collapse

VERSION =

Duh.

"4.0.0"
@@sandbox =
nil

Class Method Summary collapse

Class Method Details

.disable(&block) ⇒ Object

Disable Isolate. If a block is provided, isolation will be disabled for the scope of the block.



16
17
18
# File 'lib/isolate.rb', line 16

def self.disable &block
  sandbox.disable(&block)
end

.envObject

What environment should be isolated? Consults environment variables ISOLATE_ENV, RAILS_ENV, and RACK_ENV. Defaults to "development" if none are set.



25
26
27
# File 'lib/isolate.rb', line 25

def self.env
  ENV["ISOLATE_ENV"] || ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
end

.now!(options = {}, &block) ⇒ Object

Declare an isolated RubyGems environment, installed in path. Any block given will be instance_evaled, see Isolate::Sandbox#gem and Isolate::Sandbox#environment for the sort of stuff you can do.

Valid options:

:cleanup

Should obsolete gems be removed? Default is true.

:file

Specify an Isolate file to instance_eval. Default is Isolate or config/isolate.rb, whichever is found first. Passing false disables file loading.

:install

Should missing gems be installed? Default is true.

:multiruby

Should Isolate assume that multiple Ruby versions will be used simultaneously? If so, gems will be segregated by Ruby version. Default is false.

:path

Where should isolated gems be kept? Default is "tmp/isolate", and a Ruby version specifier suffix will be added if :multiruby is true.

:name

Like path, but expands to: ~/.gem/repos/#name/ (like ohmygems)

:system

Should system gems be allowed to satisfy dependencies? Default is true.

:verbose

Should Isolate be chatty during installs and nukes? Default is true.



76
77
78
79
# File 'lib/isolate.rb', line 76

def self.now! options = {}, &block
  @@sandbox = Isolate::Sandbox.new options, &block
  @@sandbox.activate
end

.refreshObject

Poke RubyGems, since we’ve probably monkeyed with a bunch of paths and suchlike. Clears paths, loaded specs, and source indexes.



84
85
86
87
88
# File 'lib/isolate.rb', line 84

def self.refresh # :nodoc:
  Gem.loaded_specs.clear
  Gem.clear_paths
  Gem::Specification.reset
end

.sandboxObject

A singleton instance of Isolate::Sandbox.



33
34
35
# File 'lib/isolate.rb', line 33

def self.sandbox
  @@sandbox
end

.sandbox=(o) ⇒ Object

Set the singleton. Intended for Hoe::Isolate and other tools that make their own.



40
41
42
# File 'lib/isolate.rb', line 40

def self.sandbox= o
  @@sandbox = o
end