Methods
Attributes
[RW] lib
[RW] name
[RW] requirement
[RW] source
[RW] version
Public Class methods
new(name, options = {})
    # File railties/lib/rails/gem_dependency.rb, line 9
 9:     def initialize(name, options = {})
10:       require 'rubygems' unless Object.const_defined?(:Gem)
11: 
12:       if options[:requirement]
13:         @requirement = options[:requirement]
14:       elsif options[:version]
15:         @requirement = Gem::Requirement.create(options[:version])
16:       end
17: 
18:       @version  = @requirement.instance_variable_get("@requirements").first.last if @requirement
19:       @name     = name.to_s
20:       @lib      = options[:lib]
21:       @source   = options[:source]
22:       @loaded   = @frozen = @load_paths_added = false
23:       @unpack_directory = nil
24:     end
unpacked_path()
   # File railties/lib/rails/gem_dependency.rb, line 5
5:     def self.unpacked_path
6:       @unpacked_path ||= File.join(RAILS_ROOT, 'vendor', 'gems')
7:     end
Public Instance methods
==(other)
     # File railties/lib/rails/gem_dependency.rb, line 101
101:     def ==(other)
102:       self.name == other.name && self.requirement == other.requirement
103:     end
add_load_paths()
    # File railties/lib/rails/gem_dependency.rb, line 30
30:     def add_load_paths
31:       return if @loaded || @load_paths_added
32:       unpacked_paths = self.unpacked_paths
33:       if unpacked_paths.empty?
34:         args = [@name]
35:         args << @requirement.to_s if @requirement
36:         gem *args
37:       else
38:         $LOAD_PATH.unshift File.join(unpacked_paths.first, 'lib')
39:         ext = File.join(unpacked_paths.first, 'ext')
40:         $LOAD_PATH.unshift(ext) if File.exist?(ext)
41:         @frozen = true
42:       end
43:       @load_paths_added = true
44:     rescue Gem::LoadError
45:     end
dependencies()
    # File railties/lib/rails/gem_dependency.rb, line 47
47:     def dependencies
48:       all_dependencies = specification.dependencies.map do |dependency|
49:         GemDependency.new(dependency.name, :requirement => dependency.version_requirements)
50:       end
51:       all_dependencies += all_dependencies.map(&:dependencies).flatten
52:       all_dependencies.uniq
53:     end
frozen?()
    # File railties/lib/rails/gem_dependency.rb, line 68
68:     def frozen?
69:       @frozen
70:     end
gem_dir(base_directory)
    # File railties/lib/rails/gem_dependency.rb, line 55
55:     def gem_dir(base_directory)
56:       File.join(base_directory, specification.full_name)
57:     end
install()
    # File railties/lib/rails/gem_dependency.rb, line 80
80:     def install
81:       cmd = "#{gem_command} #{install_command.join(' ')}"
82:       puts cmd
83:       puts %x(#{cmd})
84:     end
load()
    # File railties/lib/rails/gem_dependency.rb, line 59
59:     def load
60:       return if @loaded || @load_paths_added == false
61:       require(@lib || @name)
62:       @loaded = true
63:     rescue LoadError
64:       puts $!.to_s
65:       $!.backtrace.each { |b| puts b }
66:     end
load_paths_added?()
    # File railties/lib/rails/gem_dependency.rb, line 76
76:     def load_paths_added?
77:       @load_paths_added
78:     end
loaded?()
    # File railties/lib/rails/gem_dependency.rb, line 72
72:     def loaded?
73:       @loaded
74:     end
specification()
     # File railties/lib/rails/gem_dependency.rb, line 105
105:     def specification
106:       @spec ||= Gem.source_index.search(Gem::Dependency.new(@name, @requirement)).sort_by { |s| s.version }.last
107:     end
unpack_to(directory)
    # File railties/lib/rails/gem_dependency.rb, line 86
86:     def unpack_to(directory)
87:       FileUtils.mkdir_p directory
88:       Dir.chdir directory do
89:         Gem::GemRunner.new.run(unpack_command)
90:       end
91: 
92:       # copy the gem's specification into GEMDIR/.specification so that
93:       # we can access information about the gem on deployment systems
94:       # without having the gem installed
95:       spec_filename = File.join(gem_dir(directory), '.specification')
96:       File.open(spec_filename, 'w') do |file|
97:         file.puts specification.to_yaml
98:       end
99:     end
unpacked_paths()
    # File railties/lib/rails/gem_dependency.rb, line 26
26:     def unpacked_paths
27:       Dir[File.join(self.class.unpacked_path, "#{@name}-#{@version || "*"}")]
28:     end