Rails资产:部署期间预编译失败

时间:2012-12-21 12:14:53

标签: ruby-on-rails deployment capistrano asset-pipeline

当我突然意识到它有一个小bug时,我的小型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版本的资产时,同样的事情也发生了(在开发过程中它就像一个魅力)。

这似乎与其他precompile - StackOverflow上的麻烦不同。

2 个答案:

答案 0 :(得分:2)

与公众的看法相反,事实证明是我的错误。我开始查找atomic.rb的来源,并认为对chown的调用实际上最终会完全没有。所以我修补了它,而不是在alwaysdata用户论坛中留言。随着我的(丑陋的)小补丁部署再次像以前一样工作。

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

答案 1 :(得分:0)

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

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