2012-12-21 205 views
1

当我突然意识到它有一个小错误时,我有了我的小rails-app(基于refinerycms),并运行良好。修复它,测试好,提交,推送,部署,定期例程。但是这一次我的部署(这之前工作过无数次)期间assets:precompile对我开车撞Rails资产:部署期间的预编译失败

* 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' 
    ... 

,当然还有一大堆堆栈跟踪的。我试图在网络上找到某些东西,但惨败得无影无踪。当我试图预编译应用程序的current版本的资产时(也就是开发中的魅力),也发生了同样的情况。

这似乎不同于其他precompile-在StackOverflow上的错误。

+1

检查您的部署用户是否对您的资产或tmp文件夹拥有权限。 – MurifoX

+0

我无法回答我的问题,因为我不知道它是如何修复它的,但我可以告诉你我最终做了什么。 alwaysdata主要是Django托管的,但是因为我可以安装自己的rails,所以不会有太大的问题。为了调试这个问题,我因此在'atomic.rb'中引入了一个'puts file_name',并且奇迹永远不会停止(或者很快圣诞节:-),从而解决了这个问题。但是,这让我感到比以前更困惑(但至少在固定的应用程序中:-)。任何暗示的原因,不胜感激。 – Patru

+0

我刚刚尝试了相反的实验并删除了我的'puts ...',问题又回来了。然而,即使重新引入线路,它也不会消失。由于我现在没有任何变化,这不是一大堆问题,但“解决方案”似乎很暂时甚至是随机的,这很麻烦。 – Patru

回答

2

与公众的看法相反,结果是而不是是我的错误。我开始寻找atomic.rb的来源,并认为chown的呼叫实际上最终会做没有任何。所以我补充了它,而不是没有留下在alwaysdata用户论坛中的消息。我的(丑陋)小修补程序部署再次像以前一样工作。

几小时后,一位友好的工作人员告诉我,这导致他怀疑最近的内核升级出了问题。他在同一天晚上修好了它,一切都恢复正常(没有我的补丁)。

+0

您能否给我一些不同的步骤,以便您在alwaysdata中托管您的refinerycms项目我真的需要它,它不能正常工作(我使用rails 4和ruby2 – rota90

+0

对不起,但我在这里帮不了你。是一些论坛主题(最新版本[这一个](http://forum.alwaysdata.com/viewtopic.php?id=4232)),它处理在alwaysdata上运行更高版本的rails。不幸的是,你几乎已经离开了大多数解决方案都涉及到编译自己的ruby,rails等,并且在'fcgi'之上运行,这看起来有点过时了,但ruby 1.9.2也是如此......也许我们需要找到另一个托管的if继续这个古老版本的红宝石。 – Patru

0

它写在您的主机教程中(http://wiki.alwaysdata.com/wiki/Deploying_a_Rails_3_application)您必须在开发环境中部署您的应用程序。在这种环境下,资源不会预编译,因此您不会遇到同样的问题。

我建议切换主机的heroku或亚马逊,在那里你可以在生产环境中运行你的应用程序!

+0

感谢您的指针,我想我在阅读本教程时“忽略了”这一点。由于我有3个站点在预编译资产的“生产模式”下运行,这似乎是一个“安全”的教程。我记得当我部署第一个时,在预编译时遇到了一个问题,但由于这不是一个永久性问题,应该有更好的解决方案。 – Patru

相关问题