0
+# depends on: array.rb dir.rb env.rb file.rb hash.rb module.rb regexp.rb
0
-if defined?(Gem::Enable) && Gem::Enable
0
+if defined?(Gem::Enable) && Gem::Enable then
0
+ def gem(gem_name, *version_requirements)
0
+ Gem.push_gem_version_on_load_path(gem_name, *version_requirements)
0
- def gem(gem_name, *version_requirements)
0
- Gem.push_gem_version_on_load_path(gem_name, *version_requirements)
0
+ :sitedir => RbConfig::CONFIG["sitedir"],
0
+ :ruby_version => RbConfig::CONFIG["ruby_version"],
0
+ :libdir => RbConfig::CONFIG["libdir"],
0
+ :sitelibdir => RbConfig::CONFIG["sitelibdir"],
0
+ :arch => RbConfig::CONFIG["arch"],
0
+ :bindir => RbConfig::CONFIG["bindir"],
0
+ :EXEEXT => RbConfig::CONFIG["EXEEXT"],
0
+ :RUBY_SO_NAME => RbConfig::CONFIG["RUBY_SO_NAME"],
0
+ :ruby_install_name => RbConfig::CONFIG["ruby_install_name"]
0
- :sitedir => RbConfig::CONFIG["sitedir"],
0
- :ruby_version => RbConfig::CONFIG["ruby_version"],
0
- :libdir => RbConfig::CONFIG["libdir"],
0
- :sitelibdir => RbConfig::CONFIG["sitelibdir"],
0
- :arch => RbConfig::CONFIG["arch"],
0
- :bindir => RbConfig::CONFIG["bindir"],
0
- :EXEEXT => RbConfig::CONFIG["EXEEXT"],
0
- :RUBY_SO_NAME => RbConfig::CONFIG["RUBY_SO_NAME"],
0
- :ruby_install_name => RbConfig::CONFIG["ruby_install_name"]
0
- if defined? RUBY_FRAMEWORK_VERSION
0
- return File.join(File.dirname(ConfigMap[:sitedir]), "Gems")
0
- File.join(ConfigMap[:libdir], 'ruby', 'gems', ConfigMap[:ruby_version])
0
+ if defined? RUBY_FRAMEWORK_VERSION
0
+ return File.join(File.dirname(ConfigMap[:sitedir]), "Gems")
0
+ File.join(ConfigMap[:libdir], 'ruby', 'gems', ConfigMap[:ruby_version])
0
- set_home(ENV['GEM_HOME'] || default_dir) unless @gem_home
0
+ set_home(ENV['GEM_HOME'] || default_dir) unless @gem_home
0
- paths = [ENV['GEM_PATH']]
0
- paths << APPLE_GEM_HOME if defined? APPLE_GEM_HOME
0
- set_paths(paths.compact.join(File::PATH_SEPARATOR))
0
+ paths = [ENV['GEM_PATH']]
0
+ paths << APPLE_GEM_HOME if defined? APPLE_GEM_HOME
0
+ set_paths(paths.compact.join(File::PATH_SEPARATOR))
0
- # Set the Gem home directory (as reported by +dir+).
0
- ensure_gem_subdirectories(@gem_home)
0
+ # Set the Gem home directory (as reported by +dir+).
0
+ ensure_gem_subdirectories(@gem_home)
0
- @gem_path = gpaths.split(File::PATH_SEPARATOR)
0
+ @gem_path = gpaths.split(File::PATH_SEPARATOR)
0
+ @gem_path.each do |gp| ensure_gem_subdirectories(gp) end
0
- @gem_path.each do |gp| ensure_gem_subdirectories(gp) end
0
- def ensure_gem_subdirectories(path)
0
+ def ensure_gem_subdirectories(path)
0
- def load_full_rubygems_library
0
- Gem.methods(false).each do |method_name|
0
- undef_method method_name
0
+ def load_full_rubygems_library
0
+ Gem.methods(false).each do |method_name|
0
+ undef_method method_name
0
-
Kernel.send :undef_method, :gem
0
+
Kernel.send :undef_method, :gem
0
- $".delete File.join(Gem::ConfigMap[:libdir], 'ruby',
0
- Gem::ConfigMap[:ruby_version], 'rubygems.rb')
0
+ $".delete File.join(Gem::ConfigMap[:libdir], 'ruby',
0
+ Gem::ConfigMap[:ruby_version], 'rubygems.rb')
0
- def push_gem_version_on_load_path(gem_name, *version_requirements)
0
- if version_requirements.empty?
0
- unless GemPaths.has_key?(gem_name)
0
- raise LoadError.new("Could not find RubyGem #{gem_name} (>= 0)\n")
0
- # highest version gems already active
0
- if version_requirements.length > 1
0
- QuickLoader.load_full_rubygems_library
0
- return gem(gem_name, *version_requirements)
0
- requirement, version = version_requirements[0].split
0
- if requirement == ">" || requirement == ">="
0
- if (GemVersions[gem_name] <=> Gem.calculate_integers_for_gem_version(version)) >= 0
0
+ def push_gem_version_on_load_path(gem_name, *version_requirements)
0
+ if version_requirements.empty?
0
+ unless GemPaths.has_key?(gem_name)
0
+ raise LoadError.new("Could not find RubyGem #{gem_name} (>= 0)\n")
0
+ # highest version gems already active
0
+ if version_requirements.length > 1
0
+ QuickLoader.load_full_rubygems_library
0
+ return gem(gem_name, *version_requirements)
0
- elsif requirement == "~>"
0
- loaded_version = GemVersions[gem_name]
0
- required_version = Gem.calculate_integers_for_gem_version(version)
0
- if loaded_version && (loaded_version[0] == required_version[0])
0
+ requirement, version = version_requirements[0].split
0
+ if requirement == ">" || requirement == ">="
0
+ if (GemVersions[gem_name] <=> Gem.calculate_integers_for_gem_version(version)) >= 0
0
+ elsif requirement == "~>"
0
+ loaded_version = GemVersions[gem_name]
0
+ required_version = Gem.calculate_integers_for_gem_version(version)
0
+ if loaded_version && (loaded_version[0] == required_version[0])
0
+ QuickLoader.load_full_rubygems_library
0
+ gem(gem_name, *version_requirements)
0
- QuickLoader.load_full_rubygems_library
0
- gem(gem_name, *version_requirements)
0
- def calculate_integers_for_gem_version(gem_version)
0
- numbers = gem_version.split(".").collect {|n| n.to_i}
0
- numbers.pop while numbers.last == 0
0
- numbers << 0 if numbers.empty?
0
- def push_all_highest_version_gems_on_load_path
0
- Gem.path.each do |path|
0
- gems_directory = File.join(path, "gems")
0
- if File.exist?(gems_directory)
0
- Dir.entries(gems_directory).each do |gem_directory_name|
0
- next if gem_directory_name == "." || gem_directory_name == ".."
0
- dash = gem_directory_name.rindex("-")
0
- gem_name = gem_directory_name[0...dash]
0
- current_version = GemVersions[gem_name]
0
- new_version = calculate_integers_for_gem_version(gem_directory_name[dash+1..-1])
0
- if (current_version <=> new_version) == -1
0
+ def calculate_integers_for_gem_version(gem_version)
0
+ numbers = gem_version.split(".").collect {|n| n.to_i}
0
+ numbers.pop while numbers.last == 0
0
+ numbers << 0 if numbers.empty?
0
+ def push_all_highest_version_gems_on_load_path
0
+ Gem.path.each do |path|
0
+ gems_directory = File.join(path, "gems")
0
+ if File.exist?(gems_directory)
0
+ Dir.entries(gems_directory).each do |gem_directory_name|
0
+ next if gem_directory_name == "." || gem_directory_name == ".."
0
+ dash = gem_directory_name.rindex("-")
0
+ gem_name = gem_directory_name[0...dash]
0
+ current_version = GemVersions[gem_name]
0
+ new_version = calculate_integers_for_gem_version(gem_directory_name[dash+1..-1])
0
+ if (current_version <=> new_version) == -1
0
+ GemVersions[gem_name] = new_version
0
+ GemPaths[gem_name] = File.join(gems_directory, gem_directory_name)
0
GemVersions[gem_name] = new_version
0
GemPaths[gem_name] = File.join(gems_directory, gem_directory_name)
0
- GemVersions[gem_name] = new_version
0
- GemPaths[gem_name] = File.join(gems_directory, gem_directory_name)
0
- GemPaths.values.each do |path|
0
- if File.exist?(File.join(path, ".require_paths"))
0
- require_paths.concat(File.read(File.join(path, ".require_paths")).split.map {|require_path| File.join(path, require_path)})
0
- require_paths << File.join(path, "bin") if File.exist?(File.join(path, "bin"))
0
- require_paths << File.join(path, "lib") if File.exist?(File.join(path, "lib"))
0
+ GemPaths.values.each do |path|
0
+ if File.exist?(File.join(path, ".require_paths"))
0
+ require_paths.concat(File.read(File.join(path, ".require_paths")).split.map {|require_path| File.join(path, require_path)})
0
+ require_paths << File.join(path, "bin") if File.exist?(File.join(path, "bin"))
0
+ require_paths << File.join(path, "lib") if File.exist?(File.join(path, "lib"))
0
+ # "tag" the first require_path inserted into the $LOAD_PATH to enable
0
+ # indexing correctly with rubygems proper when it inserts an explicitly
0
+ unless require_paths.empty?
0
+ require_paths.first.instance_variable_set(:@gem_prelude_index, true)
0
+ # gem directories must come after -I and ENV['RUBYLIB']
0
+ $:[$:.index(ConfigMap[:sitelibdir]),0] = require_paths
0
+ def const_missing(constant)
0
+ QuickLoader.load_full_rubygems_library
0
+ Gem.const_get(constant)
0
- # "tag" the first require_path inserted into the $LOAD_PATH to enable
0
- # indexing correctly with rubygems proper when it inserts an explicitly
0
- unless require_paths.empty?
0
- require_paths.first.instance_variable_set(:@gem_prelude_index, true)
0
+ def method_missing(method, *args, &block)
0
+ QuickLoader.load_full_rubygems_library
0
+ super unless Gem.respond_to?(method)
0
+ Gem.send(method, *args, &block)
0
- # gem directories must come after -I and ENV['RUBYLIB']
0
- $:[$:.index(ConfigMap[:sitelibdir]),0] = require_paths
0
- def const_missing(constant)
0
- QuickLoader.load_full_rubygems_library
0
- Gem.const_get(constant)
0
- def method_missing(method, *args, &block)
0
- QuickLoader.load_full_rubygems_library
0
- super unless Gem.respond_to?(method)
0
- Gem.send(method, *args, &block)
0
+ Gem.push_all_highest_version_gems_on_load_path
0
+ $" << File.join(Gem::ConfigMap[:libdir], "ruby",
0
+ Gem::ConfigMap[:ruby_version], "rubygems.rb")
0
+ puts "Error loading gem paths on load path in gem_prelude"
0
+ puts e.backtrace.join("\n")
0
- Gem.push_all_highest_version_gems_on_load_path
0
- $" << File.join(Gem::ConfigMap[:libdir], "ruby",
0
- Gem::ConfigMap[:ruby_version], "rubygems.rb")
0
- puts "Error loading gem paths on load path in gem_prelude"
0
- puts e.backtrace.join("\n")
0
-#puts "Gem load in #{Time.now - t} seconds"