Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to stop the 'gem' utility from accessing my home directory?

When I run

gem install <somegem>

command the gem utility tries to access my home directory. It contains some non-latin characters and installation fails because of that. For example:

E:\ruby\bin>gem install <somegem>
ERROR:  While executing gem ... (Errno::ENOENT)
    No such file or directory - C:\Documents and Settings\<user>

If I switch to another user account with a username containing ASCII characters only gem works fine.

Does anybody know how to tell gem NOT to check my home directory?

UPDATE: I tried to set up GEM_HOME as suggested below but it didn't help (still checks the user home directory)

like image 922

2 Answers

Just change HOMEDRIVE and HOMEPATH before running gem, and restore after (if needed).

I've changed my gem.bat like this:

@ECHO OFF
SET _HOMEDRIVE=%HOMEDRIVE%
SET _HOMEPATH=%HOMEPATH%
SET HOMEDRIVE=E:
SET HOMEPATH=/Dev/Ruby
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"ruby.exe" "E:/Dev/Ruby/bin/gem" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"ruby.exe" "%~dpn0" %*
SET HOMEDRIVE=%_HOMEDRIVE%
SET HOMEPATH=%_HOMEPATH%

E:/Dev/Ruby/ is my Ruby path. It seems that HOMEPATH can be changed to anything else with ASCII only characters in path.

like image 133
Sergey 'm17' Kolosov Avatar answered Nov 18 '22 01:11

Sergey 'm17' Kolosov


It's simpler to write:

@ECHO OFF
SET HOMEPATH=
IF NOT "%~f0" == "~f0" GOTO :WinNT
ECHO.This version of Ruby has not been built with support for Windows 95/98/Me.
GOTO :EOF
:WinNT
@"ruby.exe" "%~dpn0" %*

In this case you don't need to write your path and can replace or redistribute with file for new installations

like image 33
prijutme4ty Avatar answered Nov 18 '22 01:11

prijutme4ty