没有这样的文件或目录(public/assets/manifest*)

Posted

技术标签:

【中文标题】没有这样的文件或目录(public/assets/manifest*)【英文标题】:No such file or directory(public/assets/manifest*) 【发布时间】:2014-02-06 10:23:03 【问题描述】:

在我使用 capistrano v3 部署 rails(3.2.16v) 期间,我收到以下错误。

$cap development deploy --trace

DEBUG [014a40e4] Running /usr/bin/env [ -L /home/ec2-user/capistrano-3/my_app/releases/20140117124107/public/assets ] on 50.13.220.55
DEBUG [014a40e4] Command: [ -L /home/ec2-user/capistrano-3/my_app/releases/20140117124107/public/assets ]
DEBUG [014a40e4] Finished in 0.602 seconds with exit status 1 (failed).
DEBUG [9c5901ab] Running /usr/bin/env [ -d /home/ec2-user/capistrano-3/my_app/releases/20140117124107/public/assets ] on 50.13.220.55
DEBUG [9c5901ab] Command: [ -d /home/ec2-user/capistrano-3/my_app/releases/20140117124107/public/assets ]
DEBUG [9c5901ab] Finished in 0.639 seconds with exit status 1 (failed).

////这个错误在trace的末尾

** 调用 deploy:assets:backup_manifest (first_time)

** 执行 deploy:assets:backup_manifest

DEBUG [a08f4c02]    cp: 
DEBUG [a08f4c02]    cannot stat `/home/ec2-user/capistrano-3/my_app/releases/20140117064709/public/assets/manifest*'
DEBUG [a08f4c02]    : No such file or directory
DEBUG [a08f4c02]    
cap aborted!
cp stdout: Nothing written
cp stderr: Nothing written

Tasks: TOP => deploy:assets:backup_manifest
The deploy has failed with an error: #<SSHKit::Command::Failed: cp stdout: Nothing written
cp stderr: Nothing written
>
** Invoke deploy:failed (first_time)
** Execute deploy:failed

我的本​​地机器上也没有任何资产文件夹。任何人都可以帮助我吗??

【问题讨论】:

这里有人问过类似的问题。希望对你有帮助***.com/questions/17720253/… @MarkoJurinčič - 我认为这是针对 capistrano v2 的。我正在使用 v3 找到另一个链接。它也适用于版本 2。但也许它可以帮助你:robmclarty.com/blog/… @MarkoJurinčič - 这也没有锻炼 【参考方案1】:

这发生在 sprockets 3.0.x 和 capistrano-rails 上,似乎在 capistrano-rails 1.1.3 上得到解决。

如果您的 Gemfile 有 gem 'capistrano-rails', '~&gt; 1.1'(按照安装指南中的建议),只需键入 bundle update capistrano-rails 即可升级。

见https://github.com/capistrano/rails/blob/master/CHANGELOG.md#113-apr-18-2015 或https://github.com/capistrano/rails/issues/111

【讨论】:

谢谢。这对我有帮助。 谢谢!我遇到了同样的问题【参考方案2】:

添加到 Gemfile gem 'sprockets', '2.12.3'

【讨论】:

为什么会被否决?这个解决方案对我有用。见github.com/capistrano/rails/issues/111。此问题是由 sprocket 3 使用 .sprocket-manifest[blablabla] 而不是 .manifest[blablabla] 引起的【参考方案3】:

试试:

touch /home/ec2-user/capistrano-3/my_app/releases/20140117064709/public/assets/manifest

我认为以前配置错误的 cap &lt;env&gt; deploy 已经搞砸了工作,现在你永远注定要失败。只需touch 一个清单文件,将允许任务deploy:assets:backup_manifest 继续做它的事情,因为它希望以前的构建清单文件在那里清理。所以,给它一些清洁的东西。无论如何,这解决了我的问题。

tl;dr;制造垃圾,继续乱扔垃圾,有人,某处会在你之后清理,在这种情况下,以前的预编译垃圾是assets_manifest_backup的宝藏。

我还通过 ssh 连接到服务器,确保 RAILS_ENV=production bundle 工作正常,并且必须为私有 git 存储库解析一些 ssh 部署密钥。那可能是口香糖,把我的作品弄糊涂了。

【讨论】:

遇到同样的错误,$ mkdir public/assets &amp;&amp; touch public/assets/manifest => $ cap &lt;env&gt; deploy => 万岁。谢谢彼得【参考方案4】:

您是否正在预编译您的资产?也许在部署之前预编译您的资产会有所帮助。

【讨论】:

以上是关于没有这样的文件或目录(public/assets/manifest*)的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的异常'RuntimeException',消息'无法创建目录public / assets // node_modules / font-awesome / fonts

clang:错误:没有这样的文件或目录:'dynamic_lookup' clang:错误:没有这样的文件或目录:'suppress'

没有路线匹配 [GET] /assets

为啥 ENOENT 的意思是“没有这样的文件或目录”?

纱线安装命令错误没有这样的文件或目录:'安装'

ENOENT:没有这样的文件或目录。?