在Mac Os Lion上使用rubygems时出现“没有这样的文件或目录 - getcwd”错误

60

我正在尝试启动一个使用rubygems的heroku控制台,但是我一直得到这个错误:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:471:in `expand_path': No such file or directory - getcwd (Errno::ENOENT)
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:471:in `find_files'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:470:in `map'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:470:in `find_files'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:1103
    from /usr/bin/heroku:9:in `require'
    from /usr/bin/heroku:9

我正在使用Mac OS Lion 10.7.3。有什么办法可以解决这个问题吗?谢谢!

18个回答

165

也许启动Heroku进程的shell当前工作目录不存在(例如在我的情况下被另一个进程删除了),因此getcwd会抛出错误。


60
如果你在一个被删除/移动的目录里打开了一个 shell,然后尝试用 Bundler 运行任何东西,也会出现这个错误(+1)。请注意,这个错误信息并没有提供解决方法。 - Heiberg
2
在 Puppet 运行期间,我的目录被删除了。 - Epu
4
这是我的错误。我删掉了一个 GitHub 仓库,然后克隆了一个名字完全相同的目录。一切似乎都工作正常,直到出现这个错误。退出目录并重新进入解决了很多问题。 - Tara Roys
这对我很有帮助,我通过sshfs映射了一个网络驱动器。切换到本地机器上的目录可以解决问题。 - span
因为我的服务器比较老,所以我运行旧版本的 rubygem,因此我不会提交错误报告,但我希望当前版本的 ruby 已经加入了一个明智的错误信息。 - mc0e
显示剩余3条评论

60

这件事情发生在我身上。最终发现是我删除了我正在运行命令的文件夹。


1
啊,是的。我忘记删除了运行命令的文件夹。 - dieend

44

我曾经遇到过同样的问题... 运行 sudo gem update --system 解决了这个问题... 你可以试一下。


3
这对我在我的Ubuntu VPS上也适用。这样做到底修复了什么问题? - Matthias
4
对我来说没有解决。 - emoleumassi
我也可以。 - khalidh
1
对我也起作用了。7.5年前的答案仍然有用。谢谢。 - Christopher Warrington
你能解释一下这个代码是做什么的吗? - Adelin

30

我也遇到了同样的问题,只需在终端中输入cd,然后返回到你原来的位置,它就可以正常工作了。


你应该在 Rails 应用的根目录下。这对我来说解决了问题。 - Yeasin Ar Rahman

13

尝试在另一个控制台标签中启动Rails服务器。

cd .对我有帮助解决了问题。


我也解决了!非常感谢! - thienhaflash

10

在本地设置 Rails 应用程序时,遇到了类似的问题。

问题是服务器正在运行一个目录,我已经从另一个终端窗口中删除以重新创建应用程序。

关闭终端并再次执行操作,或切换到其他目录并返回后再执行操作...

任何方法都可以...这对我有效。


4
我遇到了一个相似的问题,这个问题通常在工作目录被删除后出现。

2

这似乎不是Heroku的问题,因为您的代码中需要使用getcwd

如果您在生产模式下本地运行此应用程序会发生什么?您是否已经为Heroku定义了所有依赖项(可以通过.gems文件或Bundler)?


1

对我来说解决了

cd ..
cd -

你需要返回并回到当前目录。


奇怪!谢谢分享,问题已修复! - Ayyappa
可能也可以只做:cd - && cd - - JacobIRR
也可以只输入:cd - && cd - - undefined

1

我从搜索AWS Elastic Beanstalk上相同错误而来到了这个页面。

getcwd的问题是因为EB试图无休止地重复部署过程。它在完成当前操作之前更改了/var/app/staging目录。getcwd失败是因为该目录已被替换。尝试部署稳定版本或示例应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接