env:ruby \ r \ n:没有这样的文件或目录

时间:2015-03-16 09:54:10

标签: ruby-on-rails ruby rake

我有Rails项目。当我尝试运行任何rake任务或rails服务器时,它会给我这个错误

  

env:ruby \ r \ n:没有这样的文件或目录

有人可以帮助我吗?

5 个答案:

答案 0 :(得分:15)

如果您正在使用Unix / Mac,则此错误是因为您的行结尾不正确。

这里有一些要纠正的步骤。

  1. 正确设置行结尾,并让git管理它如何处理它们。

    $ git config --global core.autocrlf input

  2. 然后,在您的目录中,您将基本上转换所有文件。

    1. 现在你必须运行以下

      $ find ./ -type f -exec dos2unix {} \;

    2. 这将遍历所有文件并进行转换。这将解决错误。添加更改。承诺他们,你应该好好去。

答案 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)

我不断收到此错误,最后想出了如何修复它。

  1. 我确保了bin文件夹中文件的所有权限 可执行文件。
  2. 在当前存储库中运行ls -lha。您希望每个文件最后都有x,如此

    -rwxr-xr-x

    要实现此目的,您需要为bin文件夹中的每个文件运行chmod +x <file_name_here>,例如chmod +x railschmod +x bundle等。

    现在当你运行ls -lha时,你会发现它们最后都有一个x。

    1. 接下来,无论是在SublimeText,Atom还是您拥有的文本编辑器中,您都需要检查您是否使用了Windows行结尾。 \r字符是Windows使用的字符。 Unix只使用\n作为新行。
    2. 我使用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