我有Rails项目。当我尝试运行任何rake任务或rails服务器时,它会给我这个错误
env:ruby \ r \ n:没有这样的文件或目录
有人可以帮助我吗?
答案 0 :(得分:15)
如果您正在使用Unix / Mac,则此错误是因为您的行结尾不正确。
这里有一些要纠正的步骤。
正确设置行结尾,并让git管理它如何处理它们。
$ git config --global core.autocrlf input
然后,在您的目录中,您将基本上转换所有文件。
现在你必须运行以下
$ find ./ -type f -exec dos2unix {} \;
这将遍历所有文件并进行转换。这将解决错误。添加更改。承诺他们,你应该好好去。
答案 1 :(得分:2)
您可能已编辑./bin/rake文件并在第一行末尾添加了\ r \ n:
#!/usr/bin/env ruby
begin
load File.expand_path("../spring", __FILE__)
rescue LoadError
end
require_relative '../config/boot'
require 'rake'
Rake.application.run
确保" ruby"你只有新行char。
答案 2 :(得分:1)
由于上面的评论,我解决了我的服务器问题,该问题是由于克隆我的组的github rails应用程序并导致localhost:3000失败而引起的。我只是在全栈应用程序的后端上工作:ruby(-v 2.7.1)/ rails(-v 6.0.3.4)。这两个人的评论解决了我的错误:
“对于那些得到“发现:'dos2unix':没有这样的文件或目录”的人,错误:sudo apt install dos2unix” – RealMan 17年7月26日,14:59
“”请注意,find命令可能过多……这一点是有争议的;它可能很好,但是在某些情况下可能会过大。另一种可能的途径(对于此答案中的步骤2)为{{1 }}之后是git rm -r --cached
...这可能会更快(如果没有其他问题,它将不会对git reset --hard HEAD
管家目录中的文件运行dos2unix!)...这也有潜在的麻烦(不过,如果您是从“干净”的结帐处运行的,则可能会很好),但我认为我至少会提到它。 – lindes 19年7月13日,0:42
答案 3 :(得分:0)
我不断收到此错误,最后想出了如何修复它。
在当前存储库中运行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
,然后转到行结束选择器设置。将您的默认值更改为“LF”。
你会发现在文件的底部,Atom会告诉你结束文件的行的类型,用于Windows的CRLF
和Unix / Mac的LF
。您希望所有文件都使用'LF'。
因此,在您的终端中,通过运行atom ./bin/filename
(例如atom ./bin/rake)打开Atom中bin文件夹中的每个文件。
在底部你会看到'CRLF'或'LF'。如果你看到'CRLF',点击它,在Atom的顶部,你可以选择'LF'。
Cmd + s
要保存。
为每个人做这件事。您基本上是在告诉您的文件删除所有Windows行结尾并使用Unix行结尾。
编辑完所有文件后,您应该能够运行rake或rails命令。
注意:Sublime Text和Text Mate应该具有Atom的行结束选择器的等价物。
答案 4 :(得分:0)
我在 Windows 终端上遇到了同样的问题,使用 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
。