Object
An isolated Gem, with requirement, environment restrictions, and installation options. Generally intended for internal use. This class exposes lifecycle events for extension, see Isolate::Events for more information.
Create a new entry. Takes sandbox (currently an instance of Isolate::Sandbox), name (as above), and any number of optional version requirements (generally strings). Options can be passed as a trailing hash. Well-known keys:
:args |
Command-line build arguments. Passed to the gem at installation time. |
:source |
An alternative RubyGems source for this gem. |
# File lib/isolate/entry.rb, line 47 def initialize sandbox, name, *requirements @environments = [] @file = nil @name = name @options = {} @requirement = Gem::Requirement.default @sandbox = sandbox if /\.gem$/ =~ @name && File.file?(@name) @file = File.expand_path @name @name = File.basename(@file, ".gem"). gsub(/-#{Gem::Version::VERSION_PATTERN}$/, "") end update(*requirements) end
Activate this entry. Fires :activating and :activated.
# File lib/isolate/entry.rb, line 68 def activate fire :activating, :activated do spec = self.specification raise Gem::LoadError, "Couldn't resolve: #{self}" unless spec spec.activate end end
Install this entry in the sandbox. Fires :installing and :installed.
# File lib/isolate/entry.rb, line 79 def install old = Gem.sources.dup begin fire :installing, :installed do installer = Gem::DependencyInstaller.new(:development => false, :generate_rdoc => false, :generate_ri => false, :install_dir => @sandbox.path) Gem.sources += Array(options[:source]) if options[:source] Gem::Command.build_args = Array(options[:args]) if options[:args] installer.install @file || name, requirement end ensure Gem.sources = old Gem::Command.build_args = nil end end
Is this entry interested in environment?
# File lib/isolate/entry.rb, line 104 def matches? environment environments.empty? || environments.include?(environment) end
Is this entry satisfied by spec (generally a Gem::Specification)?
# File lib/isolate/entry.rb, line 111 def matches_spec? spec name == spec.name and requirement.satisfied_by? spec.version end
The Gem::Specification for this entry or nil if it isn’t resolveable.
# File lib/isolate/entry.rb, line 117 def specification Gem::Specification.find_by_name(name, requirement) rescue Gem::LoadError nil end
# File lib/isolate/entry.rb, line 137 def to_s "Entry[#{name.inspect}, #{requirement.to_s.inspect}]" end
Updates this entry’s environments, options, and requirement. Environments and options are merged, requirement is replaced. Fires :updating and :updated.
# File lib/isolate/entry.rb, line 127 def update *reqs fire :updating, :updated do @environments |= @sandbox.environments @options.merge! reqs.pop if Hash === reqs.last @requirement = Gem::Requirement.new reqs unless reqs.empty? end self end
Generated with the Darkfish Rdoc Generator 2.