如何阻止'gem'实用程序访问我的主目录?

And*_*кин 19 ruby windows unicode rubygems

我跑的时候

gem install <somegem>
Run Code Online (Sandbox Code Playgroud)

命令该gem实用程序尝试访问我的主目录.它包含一些非拉丁字符,因此安装失败.例如:

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

如果我使用包含ASCII字符的用户名切换到另一个用户帐户,则只能gem正常工作.

有谁知道怎么告诉gem不检查我的主目录?

更新:我尝试按照下面的建议设置GEM_HOME,但它没有帮助(仍检查用户主目录)

Ser*_*sov 34

只需在运行gem之前更改HOMEDRIVE和HOMEPATH ,然后恢复(如果需要).

我已经改变了我的gem.bat:

@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%
Run Code Online (Sandbox Code Playgroud)

E:/ Dev/Ruby /是我的Ruby路径.似乎HOMEPATH可以更改为路径中仅ASCII字符的任何其他内容.

  • 另一种更好的方法是在"gem"脚本本身中设置HOME环境变量.将以下行添加到"bin/gem"的开头:ENV ['HOME'] ="E:/ Dev/Ruby"此修复适用于所有"gem"用法.如前所述,可以更改此路径,不需要使用ruby目录. (18认同)