1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
if File.exist? File.join(File.dirname(__FILE__),'..','vendor','rails','railties','lib','rails','gem_dependency.rb')
require File.join(File.dirname(__FILE__),'..','vendor','rails','railties','lib','rails','gem_dependency.rb')
else
require 'rails/gem_dependency'
end
module Rails
class GemDependency < Gem::Dependency
# This definition of the requirement method is a patch
if !method_defined?(:requirement)
def requirement
req = version_requirements
end
end
def add_load_paths
self.class.add_frozen_gem_path
return if @loaded || @load_paths_added
if framework_gem?
@load_paths_added = @loaded = @frozen = true
return
end
begin
dep = Gem::Dependency.new(name, requirement)
spec = Gem.source_index.find { |_,s| s.satisfies_requirement?(dep) }.last
spec.activate # a way that exists
rescue
begin
gem self.name, self.requirement # < 1.8 unhappy way
# This second rescue is a patch - fall back to passing Rails::GemDependency to gem
# for older rubygems
rescue ArgumentError
gem self
end
end
@spec = Gem.loaded_specs[name]
@frozen = @spec.loaded_from.include?(self.class.unpacked_path) if @spec
@load_paths_added = true
rescue Gem::LoadError
end
end
end
|