Rails - 系统找不到指定的路径

57

我已经使用railsinstaller在Windows上安装了Rails和Ruby。问题是,当我运行rails命令时,它会显示:"系统找不到指定的路径"。

我正在运行Windows 7 x64和Ruby 2.20。

我尝试卸载Rails并再次安装,但没有帮助。像ruby -v这样的Ruby命令可以执行,但rails -v=无法工作。


你有什么需求吗?你想在你的Windows机器上安装Ruby on Rails吗? - Praveen George
好的,是的。我已经安装了它。我想要能够运行它。 - Javid Asgarov
2
这个问题让我有机会说“你只有一个工作,railsinstaller.org” :). 幸运的是,这个问题及其答案解决了我的问题。 - BlueMonkMN
10个回答

103

进入 C:\RailsInstaller\Ruby2.2.0。在一些 .bat 文件中,你会找到以下内容:

@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.2.0\bin\ruby.exe" "C:/Users/emachnic/GitRepos/railsinstaller-windows/stage/Ruby2.2.0/bin/tilt" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.2.0\bin\ruby.exe" "%~dpn0" %*

删除它,然后粘贴下面的文本:

@ECHO OFF
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
@"%~dp0ruby.exe" "%~dpn0" %*

3
这就是正确回答的方式。 :) 省了我时间。 :) - scripter
8
在一些批处理文件中,我们需要进行哪些更改?我们是否需要在所有的批处理文件中都进行这些更改,因为我所有的批处理文件都包含了上述代码。 - Priyansh
2
最好这样做。只有几个批处理文件。但是对rails.bat进行更改也可以起作用。 - scripter
3
在RailsInstaller for Ruby 2.3.0上仍然是这样。通常,您只需要更改bin\rails.batbin\bundle.bat即可。 - John Isaiah Carmona
发现这个可以修复在Windows上的直接安装问题,安装程序不能正常工作还是相当粗心的。 - Tahbaza
显示剩余3条评论

43

这是由于 RailsInstaller 中的一个 bug,导致两个文件中的 ruby.exe 位置被硬编码,只适用于 RailsInstaller 开发者的机器。在 C:\RailsInstaller\Ruby2.2.0\bin\rails.bat(这是默认安装文件夹,如果你选择了不同的安装文件夹,你的 rails.bat 可能在别处)中,您会找到以下两行:

@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.2.0\bin\ruby.exe" "C:/Users/emachnic/GitRepos/railsinstaller-windows/stage/Ruby2.2.0/bin/rails" %1 %2 %3 %4 %5 %6 %7 %8 %9

@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.2.0\bin\ruby.exe" "%~dpn0" %*

emachnic用户是RailsInstaller的开发人员。作为一种解决方法,您可以将这些文件夹更改为计算机上的文件夹。对于默认安装文件夹,您需要将这些更改为:

@"C:\RailsInstaller\Ruby2.2.0\bin\ruby.exe" "C:\RailsInstaller\Ruby2.2.0\bin\rails" %1 %2 %3 %4 %5 %6 %7 %8 %9

@"C:\RailsInstaller\Ruby2.2.0\bin\ruby.exe" "%~dpn0" %*

你还需要在 C:\RailsInstaller\Ruby2.2.0\bin\bundle.bat 中重复这两行类似代码的修改。

运行 rails -v 来验证 Rails 是否能正常工作。

你可以在他们的 Git 存储库中关注此问题:https://github.com/railsinstaller/railsinstaller-windows/issues/70


谢谢,它节省了我很多时间。 - Zia Qamar
我已经花了2个小时跟随一个复杂的教程,在Xampp中安装Redmine。这不是我使用新语言的最愉快的经历。但是,rails -v 运行正常。我还活着...谢谢! - Adrian Moisa
在我的Win 10上也有效。 - sdvnksv

20

4
是的,看起来这是Rails Installer的构建问题,导致ruby.exe的路径出错。你可能不需要全部修复,但受影响的BAT文件包括:bundle.bat、bundler.bat、erubis.bat、nokogiri.bat、rails.bat、sprockets.bat、swlite3_ruby.bat和tilt.bat。 - Glenn Lawrence

9

我在我的Windows机器上解决了这个问题,做法如下:

  1. 安装gem bundler
  2. 运行bundler install
  3. 执行以上两个命令可以修复该问题并安装所有的gems。

这将使用正确的路径重新生成所有宝石与ruby.exe. - Nabil Semaoune

9
我在 Sublime Text 中打开了位于 C:\RailsInstaller\Ruby2.2.0\bin 下的所有 .bat 文件,并使用 Ctrl+Shift+F 进行替换,将所有文件中匹配的
@"C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.2.0\bin\ruby.exe"
替换为
@"%~dp0ruby.exe"
这只花了几秒钟的时间。这可能会帮助到那些在我之后遇到此问题并对在多个文件上执行查找和替换感到困惑的人们。

3
我已经创建了一种非常简单的方法来执行@JayantBhawal的解决方案(对我来说完美地工作),使用Windows Powershell,你们都应该拥有它,因为这似乎是一个仅限于Windows机器的问题。它看起来很复杂,但实际上它所做的只是将.bat文件中所有的C:\ Users \ emachnic \ GitRepos \ railsinstaller-windows \ stage \ Ruby2.2.0 \ bin \ ruby.exe 实例替换为%〜dp0ruby.exe。只需打开PowerShell,cd到C:\ RailsInstaller \ Ruby2.3.0 \ bin ,并复制此小脚本:
Get-ChildItem . -Filter *.bat | Foreach-Object {
(Get-Content $_.name ) | ForEach-Object { 
    $_ -replace "C:\\Users\\emachnic\\GitRepos\\railsinstaller-windows\\stage\\Ruby2.2.0\\bin\\ruby.exe", "%~dp0ruby.exe" 
} | Set-Content $_.name}

在按下回车键后,您应该会发现所有该字符串的实例都已被替换。祝好运!

编辑:更新版本2.2.0 -> 2.3.0


1
这是一个很棒的解决方案!按Win + R,然后输入“powershell”,按回车键。上面的代码非常有效,但当前版本的Ruby是2.3.0,因此适当的脚本应该是Get-ChildItem . -Filter *.bat | Foreach-Object { (Get-Content $.name ) | ForEach-Object { $ -replace "C:\Users\emachnic\GitRepos\railsinstaller-windows\stage\Ruby2.3.0\bin\ruby.exe", "%~dp0ruby.exe" } | Set-Content $_.name} - Nerzid

2
我几天前遇到了这个问题。似乎在Windows上多次运行Rails后,玩弄cmd命令提示符,更改命令背景和文本颜色或同时打开多个命令提示符窗口之后,当你尝试运行命令'rails server' 'rails new App'或'bundle install'时,你会收到消息 "系统找不到指定的路径"。
我通过运行以下命令来解决这个问题: 'gem install _____' (将该行填写为:'bundle','bundler'和'byebug'),这是三个.bat文件的名称(每次运行该命令时只使用一个.bat文件名)。完成后,请进行测试!尝试创建一个新应用程序、运行bundle install并启动rails server。对我起作用。

1
我遇到了同样的问题,但在命令提示符中运行gem install rails就可以解决。
问候, T.S.

0

我相信上述问题的解决方案非常简单。

问题发生的原因是在安装目录中,您拥有的批处理文件正在采用默认路径。例如,假设您正在运行以下命令: bundle install 现在,为了执行此命令,您的捆绑批处理文件应该被正确配置。默认情况下,批处理文件将具有以下结构:

@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/bundle" %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已安装在C盘: C:\RailsInstaller\Ruby2.3.0\bin,因此上述bundle文件应该配置如下:

@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"C:/RailsInstaller/Ruby2.3.0/bin/ruby.exe" 
"C:/RailsInstaller/Ruby2.3.0/bin/bundle" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"C:/RailsInstaller/Ruby2.3.0/bin/ruby.exe" "%~dpn0" %

这将解决上述问题。

无论何时我们遇到运行命令的问题,都应该应用上述解决方案。


0

我在研究同样的问题时发现了你的问题,我刚刚为自己解决了这个问题(Windows 8.1),所以我想回答一下。我试图在使用RailsInstaller的Windows 8.1上运行Ruby 2.2。我现在能够运行Ruby和Rails,尽管是旧版本。我认为这是64位架构与32位架构之间的问题,后者似乎可以正常运行。以下是我的做法:

  1. 首先,请阅读这篇博客文章,看看它是否可以解决您的问题,虽然我不确定它能否解决。我使用regedit.exe查找了相关的AutoRun实例,但没有找到,所以我尝试了下一步。

  2. 卸载Ruby 2.2版本的RailsInstaller(进入您的控制面板 > 程序和功能,然后卸载RailsInstaller)。

  3. 然后安装1.9.3版本。请前往此处,并使用CTRL+F搜索"1.9"以找到Ruby 1.9.3版本的RailsInstaller。

  4. 安装完成后,请务必运行gem update --system以更新所有gem。在我更新gem之前,我无法正常运行rails new。现在一切正常。

所以,你将使用一个稍旧的Ruby版本,但一切应该正常工作。这个解决方案对我有效,希望对你也有效。

1
谢谢,但我已经修复了。问题出在rails.bat中指定的路径或类似的东西上。我相信这只是暂时的,直到railsinstaller的作者解决它。这在github的问题中提到了。 - Javid Asgarov
@Severus,你有链接吗? - George Edwards
1
@GeorgeEdwards,是的- https://github.com/railsinstaller/railsinstaller-windows/issues/73 希望能帮到你。 - Javid Asgarov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接