2012-03-29 33 views
3

我遵循this tutorial在窗口上的rails上安装ruby。 (步骤都在视频中解释了页面的中间)尝试在Windows上通过Cygwin调用rails命令时出错(通过railsinstaller安装)

如果我运行轨道在一个经典的Windows外壳程序(windows + r>cmd>enter)命令,它工作正常。不过,我希望能够在cygwin shell中调用它。但是,如果我这样做,例如:

$> rails s # in cygwin 

我有以下错误:

C:\RailsInstaller\Ruby1.9.3\bin\ruby.exe: No such file or directory -- /cygdrive/c/RailsInstaller/Ruby1.9.3/bin/rails (LoadError)

我看着到这个文件夹:C:\RailsInstaller\Ruby1.9.3\bin\,也的确是没有rails.exe,但只有一个rails和rails.bat文件。

rails.bat看起来是这样的:

@ECHO OFF 
IF NOT "%~f0" == "~f0" GOTO :WinNT 
@"ruby.exe" "C:/Projects/railsinstaller/stage/Ruby1.9.3/bin/rails" %1 %2 %3 %4 %5 %6 %7 %8 %9 
GOTO :EOF 
:WinNT 
@"ruby.exe" "%~dpn0" %* 

我只知道cygwin的查找.exe文件(例如,如果键入cp,是不是要执行cp.exe可执行文件)。我不知道.bat文件如何工作。

那么你知道我怎样才能让cygwin能够调用rails命令吗?

+0

如果你想要做专业Rails开发,你应该认真考虑购买一台Mac(MacBook Air的或Pro)。 – 2015-09-18 18:22:39

回答

1

不建议使用Cygwin,因为一切都设置为使用命令提示符。您可能可以使用git-bash工作,但RI中包含的命令提示符是使用RailsInstaller的受支持方法。如果你想使用Cygwin,我建议不要使用RailsInstaller。

+0

不幸的是,如果您使用的是像使用Cygwin的Aptana 3这样的IDE,则无法绕过它。 – Chookoos 2013-10-02 01:16:10

+0

Diwas,如果使用Aptana,仍然可以使用命令提示符,但它不会被集成到IDE中。不幸的是,这是使用IDE而不是文本编辑器的问题。 – 2013-10-08 19:10:48

0

我已经从这个问题这么长的时间受苦了,我只是找到了一个解决办法,在Cygwin的终端:

LN -s路径的,你护栏的安装程序/ RailsInstaller/Ruby1.9.3/bin/ruby​​.exe/bin/ruby​​ ln -s路径安装程序/ RailsInstaller/Ruby1.9.3/bin/rails.bat/bin/rails

ps:完整路径会是这样的:/cygdrive/d/RailsInstaller/Ruby1.9.3/bin/ruby.exe

然后rails可以在cygwin中调用。

+0

ln -s /cygdrive/c/RailsInstaller/Ruby1.9.3/bin/ruby.exe/bin/ruby ln -s /cygdrive/c/RailsInstaller/Ruby1.9.3/bin/rails.bat/bin/rails 错误 -/bin/rails不是文件夹 – Chookoos 2013-10-02 01:20:17

2

正如你所说,windows上的导轨是一个“.bat”文件。只需在每个命令中使用“.bat”扩展名即可。它为我工作。

试试看:“rails.bat -v”(在Cygwin中)

+0

这不会回答问题 – Chookoos 2013-10-02 01:15:02

2

我面临着同样的问题,在Cygwin的,但“轨道”命令在Windows命令提示符工作的罚款。由于周围 一转调用在Cygwin中下面的命令,
alias rails='path_to_ruby_installed_directory/bin/rails.bat'

在你的情况,
alias rails ='C:/Projects/railsinstaller/stage/Ruby1.9.3/bin/rails.bat'

为了使别名永久, 编辑在Cygwin中的主目录的.bashrc文件,并添加上述别名。

+0

它应该是别名不是别名(我试过编辑但没有足够的字符来完成编辑)。 – Mark 2017-06-07 22:33:35

0

将此添加到您的.bashrc或。zshrc为所有适当.bat创建别名:

# cygwin 
if [[ -n "$(which ruby 2>/dev/null)" ]]; then 
    RUBY_BIN=$(cygpath -u $(ruby -e 'puts RbConfig::CONFIG["bindir"]') | tr -d '\r') 
    for f in $(find ${RUBY_BIN} -regex ".*bat$"| xargs -n1 basename); do 
    alias ${f%.bat}=${f} 
    done 
fi 

感谢https://stackoverflow.com/a/19424481/1248256

相关问题