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.



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

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

Instance Attribute Details

#requestObject (readonly)

The parent request for this activation request.



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

def request
  @request
end

#specObject (readonly)

The specification to be activated.



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

def spec
  @spec
end

Instance Method Details

#==(other) ⇒ Object

:nodoc:



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

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)


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

def development?
  @request.development?
end

#download(path) ⇒ Object

Downloads a gem at path and returns the file path.



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

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)


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

def eql?(other)
  self == other
end

#full_nameObject Also known as: to_s

The full name of the specification to be activated.



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

def full_name
  name_tuple.full_name
end

#full_specObject

The Gem::Specification for this activation request.



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

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

#hashObject



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

def hash
  @spec.hash
end

#inspectObject

:nodoc:



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

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)


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

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



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

def name
  @spec.name
end

#parentObject

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



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

def parent
  @request.requester
end

#platformObject

The platform of this activation request’s specification



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

def platform
  @spec.platform
end

#pretty_print(q) ⇒ Object

:nodoc:



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

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



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

def version
  @spec.version
end