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
Constant Summary collapse
- VERSION =
Duh.
"4.0.0"- @@sandbox =
nil
Class Method Summary collapse
-
.disable(&block) ⇒ Object
Disable Isolate.
-
.env ⇒ Object
What environment should be isolated? Consults environment variables
ISOLATE_ENV,RAILS_ENV, andRACK_ENV. -
.now!(options = {}, &block) ⇒ Object
Declare an isolated RubyGems environment, installed in
path. -
.refresh ⇒ Object
Poke RubyGems, since we’ve probably monkeyed with a bunch of paths and suchlike.
-
.sandbox ⇒ Object
A singleton instance of Isolate::Sandbox.
-
.sandbox=(o) ⇒ Object
Set the singleton.
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 |
.env ⇒ Object
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 isIsolateorconfig/isolate.rb, whichever is found first. Passingfalsedisables 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:multirubyistrue. - :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! = {}, &block @@sandbox = Isolate::Sandbox.new , &block @@sandbox.activate end |
.refresh ⇒ Object
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 |
.sandbox ⇒ Object
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 |