summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rwxr-xr-xinstruby.rb7
-rw-r--r--lib/rdoc/ri/paths.rb8
-rw-r--r--lib/rubygems.rb33
4 files changed, 26 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index cd9c6f110a..0aebdc1aa9 100644
--- a/ChangeLog
+++ b/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
diff --git a/instruby.rb b/instruby.rb
index 38ed40c52b..ea9ef2a582 100755
--- a/instruby.rb
+++ b/instruby.rb
@@ -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?
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
index 2f72b9dfd5..fcafb279fd 100644
--- a/lib/rdoc/ri/paths.rb
+++ b/lib/rdoc/ri/paths.rb
@@ -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
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
index 9913b59ce1..77930016fa 100644
--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -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