Class: Gem::Resolver::ActivationRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/rubygems/resolver/activation_request.rb

Overview

Specifies a Specification object that should be activated. Also contains a dependency that was used to introduce this activation.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(spec, request) ⇒ ActivationRequest

Creates a new ActivationRequest that will activate spec. The parent request is used to provide diagnostics in case of conflicts.



21
22
23
24
# File 'lib/rubygems/resolver/activation_request.rb', line 21

def initialize(spec, request)
  @spec = spec
  @request = request
end

Instance Attribute Details

#requestObject (readonly)

The parent request for this activation request.



10
11
12
# File 'lib/rubygems/resolver/activation_request.rb', line 10

def request
  @request
end

#specObject (readonly)

The specification to be activated.



15
16
17
# File 'lib/rubygems/resolver/activation_request.rb', line 15

def spec
  @spec
end

Instance Method Details

#==(other) ⇒ Object

:nodoc:



26
27
28
29
30
31
32
33
34
35
# File 'lib/rubygems/resolver/activation_request.rb', line 26

def ==(other) # :nodoc:
  case other
  when Gem::Specification
    @spec == other
  when Gem::Resolver::ActivationRequest
    @spec == other.spec
  else
    false
  end
end

#development?Boolean

Is this activation request for a development dependency?

Returns:

  • (Boolean)


48
49
50
# File 'lib/rubygems/resolver/activation_request.rb', line 48

def development?
  @request.development?
end

#download(path) ⇒ Object

Downloads a gem at path and returns the file path.



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/rubygems/resolver/activation_request.rb', line 55

def download(path)
  Gem.ensure_gem_subdirectories path

  if @spec.respond_to? :sources
    exception = nil
    path = @spec.sources.find do |source|
      begin
        source.download full_spec, path
      rescue exception
      end
    end
    return path      if path
    raise  exception if exception

  elsif @spec.respond_to? :source
    source = @spec.source
    source.download full_spec, path

  else
    source = Gem.sources.first
    source.download full_spec, path
  end
end

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/rubygems/resolver/activation_request.rb', line 37

def eql?(other)
  self == other
end

#full_nameObject Also known as: to_s

The full name of the specification to be activated.



82
83
84
# File 'lib/rubygems/resolver/activation_request.rb', line 82

def full_name
  name_tuple.full_name
end

#full_specObject

The Gem::Specification for this activation request.



91
92
93
# File 'lib/rubygems/resolver/activation_request.rb', line 91

def full_spec
  Gem::Specification === @spec ? @spec : @spec.spec
end

#hashObject



41
42
43
# File 'lib/rubygems/resolver/activation_request.rb', line 41

def hash
  @spec.hash
end

#inspectObject

:nodoc:



95
96
97
98
99
# File 'lib/rubygems/resolver/activation_request.rb', line 95

def inspect # :nodoc:
  '#<%s for %p from %s>' % [
    self.class, @spec, @request
  ]
end

#installed?Boolean

True if the requested gem has already been installed.

Returns:

  • (Boolean)


104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/rubygems/resolver/activation_request.rb', line 104

def installed?
  case @spec
  when Gem::Resolver::VendorSpecification then
    true
  else
    this_spec = full_spec

    Gem::Specification.any? do |s|
      s == this_spec
    end
  end
end

#nameObject

The name of this activation request’s specification



120
121
122
# File 'lib/rubygems/resolver/activation_request.rb', line 120

def name
  @spec.name
end

#parentObject

Return the ActivationRequest that contained the dependency that we were activated for.



128
129
130
# File 'lib/rubygems/resolver/activation_request.rb', line 128

def parent
  @request.requester
end

#platformObject

The platform of this activation request’s specification



153
154
155
# File 'lib/rubygems/resolver/activation_request.rb', line 153

def platform
  @spec.platform
end

#pretty_print(q) ⇒ Object

:nodoc:



132
133
134
135
136
137
138
139
140
141
# File 'lib/rubygems/resolver/activation_request.rb', line 132

def pretty_print(q) # :nodoc:
  q.group 2, '[Activation request', ']' do
    q.breakable
    q.pp @spec

    q.breakable
    q.text ' for '
    q.pp @request
  end
end

#versionObject

The version of this activation request’s specification



146
147
148
# File 'lib/rubygems/resolver/activation_request.rb', line 146

def version
  @spec.version
end