请问是否有人能帮助我解决这个问题?env: ruby\r: 没有那个文件或目录
请问是否有人能帮助我解决这个问题?env: ruby\r: 没有那个文件或目录
如果您在Unix / Mac上工作,那么这个错误是因为您的行结束符不正确。
这里有一个使用dos2unix
的解决方案;您可能需要在系统上安装此程序。如果apt
可用,则可以使用sudo apt install dos2unix
。
git config --global core.autocrlf input
find ./ -type f -exec dos2unix {} \;
这将循环遍历您的所有文件,进行转换并解决问题。添加更改,提交它们,然后您就可以开始了。
#!/usr/bin/env ruby
begin
load File.expand_path("../spring", __FILE__)
rescue LoadError
end
require_relative '../config/boot'
require 'rake'
Rake.application.run
git rm -r --cached
然后是git reset --hard HEAD
……这可能更快(如果没有其他问题,它不会在.git
维护目录中运行dos2unix!)……这也可能有潜在的陷阱(如果您从“干净”的检出中运行,那么这很好),但我至少要提一下。”– lindes Jul 13 '19 at 0:42在当前存储库中运行 ls -lha
命令。你希望每个文件的结尾都有一个 x
,就像这样
-rwxr-xr-x
。
为此,你需要为bin文件夹中的每个文件运行 chmod +x <file_name_here>
,例如 chmod +x rails
,chmod +x bundle
等。
现在运行 ls -lha
命令,你应该能看到它们结尾都有一个 x。
\r
字符是Windows使用的,Unix只使用 \n
作为新行。我使用的是Atom,所以我去插件部分(Mac上按下 Cmd + ,
),然后在Packages部分搜索 line-ending-selector
,然后进入line-ending-selectors设置。将默认值更改为 'LF'。
你会发现在文件底部,Atom会告诉你文件正在使用哪种行结束方式,Windows是 CRLF
,Unix/Mac是 LF
。你希望所有文件都使用 'LF'。
因此,在终端中,通过运行 atom ./bin/filename
(例如 atom ./bin/rake)打开bin文件夹中的每个文件。
在底部,你会看到 'CRLF' 或 'LF'。如果看到 'CRLF',点击它,在Atom顶部可以选择 'LF'。
按下 Cmd + s
保存。
对于每个文件都要这样做。你基本上是告诉文件删除所有Windows换行符,并改用Unix换行符。
编辑完所有文件后,你应该能够运行rake或rails命令。
注意:Sublime Text和Text Mate应该有与Atom的line-ending-selector相当的工具。
针对 macOS 用户
步骤1: HOMEBREW_NO_AUTO_UPDATE=1 brew install dos2unix
步骤2: git config --global core.autocrlf input
步骤3: find ./ -type f -exec dos2unix {} \;
(在您试图运行任务的 repo 中执行)
git add
和 git commit
现在您可以开始使用了!
我在Windows Terminal上使用WSL 2时遇到了同样的问题!我按照一篇文章的建议安装了dos2unix
依赖项:sudo apt install dos2unix
(使用apt
包管理器),并运行其他两个命令:
git config --global core.autocrlf input
(设置正确的行尾,并让git管理如何处理它们)
find ./ -type f -exec dos2unix {} \;
(在您要转换所有文件的目录中)
git将识别出几个更改,但您不需要提交它。我只是做了一个git restore .
,删除节点依赖项rm -rf node_modules
,再次下载yarn install
。
git config --global core.autocrlf true
rails app:update:bin
git rm -r --cached .
,然后是git reset --hard HEAD
,这可能更快(至少不会在.git
清理目录中的文件上运行dos2unix!)。这也可能有潜在的陷阱(如果您从"clean" checkout运行,则可能非常好),但我想至少提一下。 - lindes