【发布时间】:2012-12-21 12:14:53
【问题描述】:
当我突然意识到它有一个小错误时,我的小rails-app(基于refinerycms)运行良好。修复它,测试正常,提交,推送,部署,常规程序。然而这一次我的部署(之前已经工作过无数次)在assets:precompile 期间崩溃了
* 2012-12-21 11:44:59 executing `deploy:assets:precompile'
* executing "cd /home/somename/releases/20121221104442 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
servers: ["ssh.alwaysdata.com"]
[ssh.alwaysdata.com] executing command
*** [err :: ssh.alwaysdata.com] rake aborted!
*** [err :: ssh.alwaysdata.com] Invalid argument - /nfs/http9/somename/app/ttvz/releases/20121221104442/tmp/cache/assets/D17/790/sprockets%2F159b50b9f479a8cb2519ea6a40f09f92
*** [err :: ssh.alwaysdata.com] /home/somename/app/ttvz/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/core_ext/file/atomic.rb:38:in `chown'
...
当然还有一大堆 Stacktrace。我试图在网上找到一些东西,但失败了。当我尝试预编译应用程序的 current 版本的资产时,同样的事情也发生了(这在开发中就像一个魅力)。
这似乎与 StackOverflow 上的其他 precompile-trouble 不同。
【问题讨论】:
-
检查您的部署用户是否对您的资产或 tmp 文件夹具有权限。
-
我无法回答我的问题,因为我不知道它是如何解决的,但我可以告诉你我最终做了什么。 alwaysdata 主要是由 Django 托管的,但我可以安装自己的 rails,这不是什么大问题。因此,为了调试问题,我在
atomic.rb中引入了puts file_name,因为奇迹永远不会停止(或者马上就是圣诞节了:-)解决了这个问题。然而,这让我比以前更加困惑(但至少又是一个固定的应用程序:-)。非常感谢任何有原因的提示。 -
我刚刚尝试了反向实验并删除了我的
puts ...,问题又回来了。然而,即使重新引入这条线,它也没有消失。因为我现在没有任何改变,这不是一大堆问题,但是“解决方案”看起来如此临时甚至是随机的,这很麻烦。
标签: ruby-on-rails deployment capistrano asset-pipeline