windows上使用railsinstaller安装ruby和rails后,执行rails -v
提示系统找不到指定的路径,网上搜索的答案也没有解释原因,故自行研究了一下原因和解决办法。
原因
railsinstaller是3.3.0版本的,安装在c盘根目录下,ruby和rails等文件在C:\RailsInstaller\Ruby2.3.0\bin目录下,查看rails.bat发现其内容如下:
@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.3.0\bin\ruby.exe" "C:/Users/emachnic/GitRepos/railsinstaller-windows/stage/Ruby2.3.0/bin/rails" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.3.0\bin\ruby.exe" "%~dpn0" %*
可以看到其中rails使用了绝对路径,而这个路径在本地的电脑中是不存在的,安装的时候没有根据本地安装路径修改这个文件,所以在命令行中执行的时候会提示系统找不到指定的路径
。
解决办法
由于安装的时候已经自动给rails所在的文件夹加入了环境变量,所以直接将绝对路径改成文件名就行了:C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.3.0\bin\ruby.exe
-> ruby
。
修改后的文件如下:
@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"ruby" "rails" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"ruby" "%~dpn0" %*
类似的其他.bat文件也按找这种方法改就行了,比如bundle.bat:
@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"ruby" "bundle" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"ruby" "%~dpn0" %*