ruby env:拼音\r:无此文件或目录

8xiog9wr  于 2023-02-18  发布在  Ruby
关注(0)|答案(7)|浏览(141)

我有Rails项目。当我尝试运行任何rake任务或rails服务器时,它给我这个错误
env:拼音\r:无此文件或目录
有人能帮帮我吗?

wwtsj6pe

wwtsj6pe1#

如果您在Unix / Mac上工作,则此错误是因为您的行尾不正确。
下面是一个使用dos2unix的解决方案;你可能需要在你的系统上安装这个程序。2如果apt可用,你可以使用sudo apt install dos2unix

  1. 1.正确设置行尾,并让git管理如何处理它们:
git config --global core.autocrlf input
  1. 1.在您的目录中,您将通过运行以下命令来转换所有文件:
find ./ -type f -exec dos2unix {} \;

这将循环通过你所有的文件,转换它们。并解决问题。添加你的更改。提交它们,你应该很好地去。

3yhwsihp

3yhwsihp2#

您可能已经编辑了./bin/rake文件并在第一行末尾添加了\r:

#!/usr/bin/env ruby
begin
  load File.expand_path("../spring", __FILE__)
rescue LoadError
end
require_relative '../config/boot'
require 'rake'
Rake.application.run

确保在“ruby”之后只有换行符。

laximzn5

laximzn53#

多亏了上面的评论,我解决了我的服务器问题,这个问题是由于克隆我的小组的github rails应用程序并导致localhost:3000失败而引起的。ruby(-v 2.7.1)/rails(-v6.0.3.4)。下面两个人的评论解决了我的错误:
“对于那些你谁得到了“发现:“dos2unix”:无此文件或目录”错误:sudo倾向于安装dos 2unix”- RealMan 2017年7月26日14:59
“请注意,find命令可能过多......这一点是有争议的;它很可能是好的,但在某些情况下可能是矫枉过正的。另一种可能的路线(对于此答案中的步骤2)是git rm -r --cached。然后是git reset --hard HEAD...后者可能更快(如果没有别的,它不会在.git管理目录中的文件上运行dos 2unix!)......这也有潜在的缺陷(如果你是从一个“干净”的结账台跑过来的话,可能还不错),但我想我至少应该提一下。”- lindes Jul 13 '19 at 0:42

pb3skfrl

pb3skfrl4#

我不断得到这个错误,终于想出了如何修复它.
1.我确保bin文件夹中文件的所有权限都是可执行的。
在当前存储库中运行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作为新行。
我使用Atom,所以我去了插件部分(Mac上的Cmd + ,),然后在Packages部分搜索line-ending-selector,然后去了行尾选择器设置。
你会发现在文件的底部,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行尾选择器的等价物。

3duebb1j

3duebb1j5#

适用于macOS用户
步骤1:HOMEBREW_NO_AUTO_UPDATE=1 brew install dos2unix
步骤2:git config --global core.autocrlf input
步骤3:find ./ -type f -exec dos2unix {} \;(在您试图运行任务的存储库中)
git addgit commit
你可以走了!

xpszyzbs

xpszyzbs6#

如果这些方法都不起作用,请尝试以下方法:

git config --global core.autocrlf true
rails app:update:bin
30byixjq

30byixjq7#

我在Windows终端上遇到了同样的问题,使用的是WSL 2!我关注了一篇建议安装dos2unix dependencie的帖子: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

相关问题