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_eval
ed, 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 isIsolate
orconfig/isolate.rb
, whichever is found first. Passingfalse
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
istrue
. - :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 |