зеркало из https://github.com/github/ruby.git
* lib/rubygems.rb (Gem.set_home, Gem.set_paths): should not create
directories stealthily. [ruby-core:20990] * lib/rubygems.rb (Gem.find_home): expand_path deals with platform dependent envirionments. * lib/rdoc/ri/paths.rb (RDoc::HOMEDIR): ditto. * instruby.rb (gem): creates gem directories at installation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21312 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
ef7057fe2f
Коммит
6754cad8e9
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
Sun Jan 4 17:07:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* lib/rubygems.rb (Gem.set_home, Gem.set_paths): should not create
|
||||
directories stealthily. [ruby-core:20990]
|
||||
|
||||
* lib/rubygems.rb (Gem.find_home): expand_path deals with platform
|
||||
dependent envirionments.
|
||||
|
||||
* lib/rdoc/ri/paths.rb (RDoc::HOMEDIR): ditto.
|
||||
|
||||
* instruby.rb (gem): creates gem directories at installation.
|
||||
|
||||
Sun Jan 4 15:41:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* encoding.c (rb_filesystem_encoding, rb_locale_charmap): uses
|
||||
|
|
|
@ -409,6 +409,13 @@ install?(:local, :comm, :man) do
|
|||
end
|
||||
end
|
||||
|
||||
install?(:local, :comm, :gem) do
|
||||
puts "creating default gem directories"
|
||||
|
||||
gpath = Gem.default_dir
|
||||
makedirs Gem::DIRECTORIES.collect {|dir| File.join(gpath, dir)}
|
||||
end
|
||||
|
||||
$install << :local << :ext if $install.empty?
|
||||
$install.each do |inst|
|
||||
if !(procs = $install_procs[inst]) || procs.empty?
|
||||
|
|
|
@ -31,13 +31,7 @@ module RDoc::RI::Paths
|
|||
base = File.join(RbConfig::CONFIG['datadir'], "ri", VERSION)
|
||||
SYSDIR = File.join(base, "system")
|
||||
SITEDIR = File.join(base, "site")
|
||||
homedir = ENV['HOME'] || ENV['USERPROFILE'] || ENV['HOMEPATH']
|
||||
|
||||
if homedir then
|
||||
HOMEDIR = File.join(homedir, ".rdoc")
|
||||
else
|
||||
HOMEDIR = nil
|
||||
end
|
||||
HOMEDIR = (File.expand_path("~/.rdoc") rescue nil)
|
||||
|
||||
begin
|
||||
require 'rubygems' unless defined?(Gem) and defined?(Gem::Enable) and
|
||||
|
|
|
@ -373,22 +373,12 @@ module Gem
|
|||
# least on Win32).
|
||||
|
||||
def self.find_home
|
||||
['HOME', 'USERPROFILE'].each do |homekey|
|
||||
return ENV[homekey] if ENV[homekey]
|
||||
end
|
||||
|
||||
if ENV['HOMEDRIVE'] && ENV['HOMEPATH'] then
|
||||
return "#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}"
|
||||
end
|
||||
|
||||
begin
|
||||
File.expand_path("~")
|
||||
rescue
|
||||
if File::ALT_SEPARATOR then
|
||||
"C:/"
|
||||
else
|
||||
"/"
|
||||
end
|
||||
File.expand_path("~")
|
||||
rescue
|
||||
if File::ALT_SEPARATOR then
|
||||
"C:/"
|
||||
else
|
||||
"/"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -691,7 +681,6 @@ module Gem
|
|||
def self.set_home(home)
|
||||
home = home.gsub(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
||||
@gem_home = home
|
||||
ensure_gem_subdirectories(@gem_home)
|
||||
end
|
||||
|
||||
private_class_method :set_home
|
||||
|
@ -716,16 +705,6 @@ module Gem
|
|||
end
|
||||
|
||||
@gem_path.uniq!
|
||||
@gem_path.each do |path|
|
||||
if 0 == File.expand_path(path).index(Gem.user_home)
|
||||
next unless File.directory? Gem.user_home
|
||||
unless win_platform? then
|
||||
# only create by matching user
|
||||
next if Etc.getpwuid.uid != File::Stat.new(Gem.user_home).uid
|
||||
end
|
||||
end
|
||||
ensure_gem_subdirectories path
|
||||
end
|
||||
end
|
||||
|
||||
private_class_method :set_paths
|
||||
|
|
Загрузка…
Ссылка в новой задаче