我有 Rails 项目。当我尝试运行任何 rake 任务或 rails 服务器时,它给我这个错误
环境:红宝石 : 没有那个文件或目录
有人可以帮我吗?
如果你在 Unix / Mac 上工作,那么这个错误是因为你的行尾不正确。
这里是一个使用
dos2unix
的解决方案;您可能需要在您的系统上安装此程序。如果apt
可用,您可以使用sudo apt install dos2unix
.
git config --global core.autocrlf input
find ./ -type f -exec dos2unix {} \;
这将循环遍历所有文件,转换它们。并解决问题。添加您的更改。提交它们,你就可以开始了。
您可能已经编辑了 ./bin/rake 文件并添加了 在第一行的末尾:
#!/usr/bin/env ruby
begin
load File.expand_path("../spring", __FILE__)
rescue LoadError
end
require_relative '../config/boot'
require 'rake'
Rake.application.run
确保在“ruby”之后你只有换行符。
感谢上面的评论,我解决了由于克隆我组的 github rails 应用程序并导致 localhost:3000 失败而导致的服务器问题。我只是在我的全栈应用程序的后端工作:ruby(-v 2.7.1)/rails(-v 6.0.3.4)。这两个人的评论解决了我的错误:
“对于那些遇到“查找:'dos2unix':没有这样的文件或目录”错误:sudo apt install dos2unix”的人 – RealMan 2017 年 7 月 26 日 14:59
“请注意,该 find 命令可能过多……这一点是有争议的;它可能很好,但在某些情况下可能有点矫枉过正。另一种可能的路线(对于此答案中的第 2 步)是
git rm -r --cached
。随后通过git reset --hard HEAD
...这可能会更快(如果没有别的,它不会在.git
管家目录中的文件上运行dos2unix!)...这也有潜在的陷阱(如果你是不过,从“干净”的结账处运行),但我想我至少会提到它。” – lindes 19 年 7 月 13 日 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,所以我去了插件部分(
Cmd + ,
在 Mac 上),然后在包部分搜索 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 的行尾选择器等效的功能。
对于 macOS 用户
第一步:
HOMEBREW_NO_AUTO_UPDATE=1 brew install dos2unix
git config --global core.autocrlf input
find ./ -type f -exec dos2unix {} \;
(在您尝试运行任务的回购协议中)
git add
和git commit
如果其他答案都不起作用,试试这个:
git config --global core.autocrlf true
rails app:update:bin
我在使用 WSL 2 的 Windows 终端上遇到了同样的问题!我关注了一篇建议安装
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
.