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 && @request == other.request
  else
    false
  end
end

#development?Boolean

Is this activation request for a development dependency?

Returns:

  • (Boolean)

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

def development?
  @request.development?
end

#download(path) ⇒ Object

Downloads a gem at path and returns the file path.


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/rubygems/resolver/activation_request.rb', line 48

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

#full_nameObject Also known as: to_s

The full name of the specification to be activated.


75
76
77
# File 'lib/rubygems/resolver/activation_request.rb', line 75

def full_name
  name_tuple.full_name
end

#full_specObject

The Gem::Specification for this activation request.


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

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

#inspectObject

:nodoc:


88
89
90
91
92
# File 'lib/rubygems/resolver/activation_request.rb', line 88

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)

97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/rubygems/resolver/activation_request.rb', line 97

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


113
114
115
# File 'lib/rubygems/resolver/activation_request.rb', line 113

def name
  @spec.name
end

#parentObject

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


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

def parent
  @request.requester
end

#platformObject

The platform of this activation request's specification


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

def platform
  @spec.platform
end

#pretty_print(q) ⇒ Object

:nodoc:


125
126
127
128
129
130
131
132
133
134
# File 'lib/rubygems/resolver/activation_request.rb', line 125

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


139
140
141
# File 'lib/rubygems/resolver/activation_request.rb', line 139

def version
  @spec.version
end