From a5cfbb95989894a64695ce69dd0d7b328cadc43b Mon Sep 17 00:00:00 2001 From: dickeyxxx Date: Wed, 10 Dec 2014 12:02:49 -0800 Subject: [PATCH] use Dir.home for ruby 1.9+ --- lib/netrc.rb | 14 +++++++++++--- test/test_netrc.rb | 5 +++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/netrc.rb b/lib/netrc.rb index fdb1e69..1f716fe 100644 --- a/lib/netrc.rb +++ b/lib/netrc.rb @@ -8,19 +8,27 @@ class Netrc CYGWIN = RbConfig::CONFIG["host_os"] =~ /cygwin/ def self.default_path + File.join(home_path, netrc_filename) + end + + def self.home_path + return Dir.home if defined? Dir.home # Ruby 1.9+ if WINDOWS && !CYGWIN home = ENV['HOME'] home ||= ENV['HOMEDRIVE'] + ENV['HOMEPATH'] if ENV['HOMEDRIVE'] && ENV['HOMEPATH'] home ||= ENV['USERPROFILE'] - File.join(home.gsub("\\","/"), "_netrc") + home.gsub("\\","/") else # In some cases, people run master process as "root" user, and run worker processes as "www" user. # Fix "Permission denied" error in worker processes when $HOME is "/root". - default_dir = (ENV['HOME'] && File.exist?(ENV['HOME']) && File.stat(ENV['HOME']).readable?) ? ENV['HOME'] : './' - File.join(default_dir, ".netrc") + (ENV['HOME'] && File.exist?(ENV['HOME']) && File.stat(ENV['HOME']).readable?) ? ENV['HOME'] : './' end end + def self.netrc_filename + WINDOWS && !CYGWIN ? "_netrc" : ".netrc" + end + def self.config @config ||= {} end diff --git a/test/test_netrc.rb b/test/test_netrc.rb index d656c52..d8b6d9b 100644 --- a/test/test_netrc.rb +++ b/test/test_netrc.rb @@ -196,8 +196,9 @@ def test_encrypted_roundtrip def test_missing_environment nil_home = nil ENV["HOME"], nil_home = nil_home, ENV["HOME"] - n = Netrc.read - assert_equal(nil, n["x"]) + assert_raise_with_message ArgumentError, "couldn't find HOME environment -- expanding `~'" do + Netrc.read + end ensure ENV["HOME"], nil_home = nil_home, ENV["HOME"] end