diff --git a/lib/irb/init.rb b/lib/irb/init.rb index 11d10c5bab..5409528fae 100644 --- a/lib/irb/init.rb +++ b/lib/irb/init.rb @@ -379,11 +379,9 @@ module IRB # :nodoc: end if xdg_config_home = ENV["XDG_CONFIG_HOME"] irb_home = File.join(xdg_config_home, "irb") - unless File.exist? irb_home - require 'fileutils' - FileUtils.mkdir_p irb_home + if File.directory?(irb_home) + yield proc{|rc| irb_home + "/irb#{rc}"} end - yield proc{|rc| irb_home + "/irb#{rc}"} end if home = ENV["HOME"] yield proc{|rc| home+"/.irb#{rc}"} diff --git a/test/irb/test_init.rb b/test/irb/test_init.rb index 074aae4070..39c5cfa8a0 100644 --- a/test/irb/test_init.rb +++ b/test/irb/test_init.rb @@ -36,13 +36,16 @@ module TestIRB def test_rc_file tmpdir = @tmpdir Dir.chdir(tmpdir) do + ENV["XDG_CONFIG_HOME"] = "#{tmpdir}/xdg" IRB.conf[:RC_NAME_GENERATOR] = nil assert_equal(tmpdir+"/.irb#{IRB::IRBRC_EXT}", IRB.rc_file) assert_equal(tmpdir+"/.irb_history", IRB.rc_file("_history")) + assert_file.not_exist?(tmpdir+"/xdg") IRB.conf[:RC_NAME_GENERATOR] = nil FileUtils.touch(tmpdir+"/.irb#{IRB::IRBRC_EXT}") assert_equal(tmpdir+"/.irb#{IRB::IRBRC_EXT}", IRB.rc_file) assert_equal(tmpdir+"/.irb_history", IRB.rc_file("_history")) + assert_file.not_exist?(tmpdir+"/xdg") end end