环境:红宝石 : 没有那个文件或目录

问题描述 投票:0回答:7

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

环境:红宝石 : 没有那个文件或目录

有人可以帮我吗?

ruby-on-rails ruby rake
7个回答
38
投票

如果你在 Unix / Mac 上工作,那么这个错误是因为你的行尾不正确。

这里是一个使用

dos2unix
的解决方案;您可能需要在您的系统上安装此程序。如果
apt
可用,您可以使用
sudo apt install dos2unix
.

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

这将循环遍历所有文件,转换它们。并解决问题。添加您的更改。提交它们,你就可以开始了。


4
投票

您可能已经编辑了 ./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”之后你只有换行符。


3
投票

感谢上面的评论,我解决了由于克隆我组的 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


2
投票

我一直收到这个错误,最后想出了解决方法。

  1. 我确保我的 bin 文件夹中的文件的所有权限都是 可执行。

在您当前的存储库中运行

ls -lha
。你希望每个文件的末尾都有一个
x
像这样

-rwxr-xr-x

为此,您需要为 bin 文件夹中的每个文件运行

chmod +x <file_name_here>
,例如
chmod +x rails
chmod +x bundle

现在当你运行

ls -lha
你应该看到它们的末尾都有一个 x.

  1. 接下来,无论是在 SublimeText、Atom 还是您拥有的任何文本编辑器中,您都需要检查您是否没有使用 Windows 行尾。
    \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 的行尾选择器等效的功能。


2
投票

对于 macOS 用户

第一步:

HOMEBREW_NO_AUTO_UPDATE=1 brew install dos2unix

第 2 步:
git config --global core.autocrlf input

第 3 步:
find ./ -type f -exec dos2unix {} \;
(在您尝试运行任务的回购协议中)

git add
git commit

你很高兴去!


1
投票

如果其他答案都不起作用,试试这个:

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

0
投票

我在使用 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
.

© www.soinside.com 2019 - 2024. All rights reserved.