【问题标题】:Asset pipeline issue when running cap deploy:update on Rails 3.1.3运行 cap deploy 时的资产管道问题:Rails 3.1.3 上的更新
【发布时间】:2011-12-11 20:56:32
【问题描述】:

首次使用 Capistrano 部署应用,但在 Rails 3.1.3、Capistrano 2.9.0、RVM 1.8.6 和 Ubuntu 服务器 10.10 上运行 cap deploy:update 任务时遇到问题。据我所知,不应该是权限问题。一段时间以来一直在为此努力,感谢任何指示。

drphil@mumindalen:~/Rails/testapp$ cap deploy:update
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote git@my_server:~/testapp/ HEAD"
git@23.23.23.23.'s password: 
command finished in 8892ms
  * executing "git clone -q git@my_server:~/testapp/         /home/deploy/testapp/releases/20111211183654 && cd /home/deploy/testapp/releases/20111211183654 && git checkout -q -b deploy f473e207b15d73d2fa9aa32ab1dbeec98471153d && (echo f473e207b15d73d2fa9aa32ab1dbeec98471153d > /home/deploy/testapp/releases/20111211183654/REVISION)"
servers: ["my_server"]
Password: 
[my_server] executing command
command finished in 1695ms
* executing `deploy:finalize_update'
triggering before callbacks for `deploy:finalize_update'
* executing `deploy:assets:symlink'
* executing "rm -rf /home/deploy/testapp/releases/20111211183654/public/assets &&\\\n        mkdir -p /home/deploy/testapp/releases/20111211183654/public &&\\\n        mkdir -p /home/deploy/testapp/shared/assets &&\\\n        ln -s /home/deploy/testapp/shared/assets /home/deploy/testapp/releases/20111211183654/public/assets"
servers: ["my_server"]
[my_server] executing command
command finished in 1117ms
* executing "chmod -R g+w /home/deploy/testapp/releases/20111211183654"
servers: ["my_server"]
[my_server] executing command
command finished in 614ms
* executing "rm -rf /home/deploy/testapp/releases/20111211183654/log /home/deploy/testapp/releases/20111211183654/public/system /home/deploy/testapp/releases/20111211183654/tmp/pids &&\\\n      mkdir -p /home/deploy/testapp/releases/20111211183654/public &&\\\n      mkdir -p /home/deploy/testapp/releases/20111211183654/tmp &&\\\n      ln -s /home/deploy/testapp/shared/log /home/deploy/testapp/releases/20111211183654/log &&\\\n      ln -s /home/deploy/testapp/shared/system /home/deploy/testapp/releases/20111211183654/public/system &&\\\n      ln -s /home/deploy/testapp/shared/pids /home/deploy/testapp/releases/20111211183654/tmp/pids"
servers: ["my_server"]
[my_server] executing command
command finished in 1022ms
* executing "find /home/deploy/testapp/releases/20111211183654/public/images /home/deploy/testapp/releases/20111211183654/public/stylesheets /home/deploy/testapp/releases/20111211183654/pu## Heading ##blic/javascripts -exec touch -t 201112111837.12 {} ';'; true"
servers: ["my_server"]
[my_server] executing command
*** [err :: my_server] find:
*** [err :: my_server] "/home/deploy/testapp/releases/20111211183654/public/images"
*** [err :: my_server] : Filen eller katalogen finns inte
*** [err :: my_server] 
*** [err :: my_server] find:
*** [err :: my_server] "/home/deploy/testapp/releases/20111211183654/public/stylesheets"
*** [err :: my_server] : Filen eller katalogen finns inte
*** [err :: my_server] 
*** [err :: my_server] find:
*** [err :: my_server] "/home/deploy/testapp/releases/20111211183654/public/javascripts"
*** [err :: my_server] : Filen eller katalogen finns inte
*** [err :: my_server] 
command finished in 1024ms
triggering after callbacks for `deploy:update_code'
  * executing `deploy:assets:precompile'
  * executing "cd /home/deploy/testapp/releases/20111211183654 && rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
servers: ["my_server"]
[my_server] executing command
*** [err :: my_server] sh:
*** [err :: my_server] rake: not found
*** [err :: my_server] 
command finished in 1440ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/deploy/testapp/releases/20111211183654; true"
servers: ["my_server"]
[my_server] executing command
command finished in 727ms
failed: "sh -c 'cd /home/deploy/testapp/releases/20111211183654 && rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'" on my_server

【问题讨论】:

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


    【解决方案1】:

    这是开发盒和服务器上不同版本的 RVM 的问题,我没有 set up deploy.rb properly 使用 RVM。挖了好几个小时,以为是某种bug。哦,好吧。

    在 deploy.rb 中使用它:

    $:.unshift(File.expand_path('./lib', ENV['rvm_path']))
    require "rvm/capistrano"
    set :rvm_ruby_string, 'ruby-1.9.2-p290'
    set :rvm_type, :user
    

    【讨论】:

      【解决方案2】:

      它找不到 rake 二进制文件。 如果您使用的是 RVM,请确保您部署的用户在 rvm 组中。

      或者,很可能(或与上述情况相结合),您为非交互式 shell 禁用了 .bashrc / bashrc / profile 环境。因此它不会加载所有配置(设置 PATH 等)。

      http://lists.apple.com/archives/macos-x-server/2008/Jun/msg00251.html

      Debian (/etc/bashrc):

      # System-wide .bashrc file for interactive bash(1) shells.
      
      # To enable the settings / commands in this file for login shells as well,
      # this file has to be sourced in /etc/profile.
      
      # If not running interactively, don't do anything
      [ -z "$PS1" ] && return
      

      ...等等。 最后一行是问题所在。它退出处理非交互式 shell 的 bashrc。 在你的系统上寻找类似的东西。

      更新:

      有一个在 debian 挤压上处理的 shell 脚本的概述: http://www.fam.tuwien.ac.at/~schamane/_/blog:110814_bash_shell_startup_files_in_debian_squeeze

      【讨论】:

      • 感谢您的回答,您是对的,但这是一个 RVM 问题,但 .bashrc 已经从 .bash_profile 获取。
      猜你喜欢
      • 2012-08-02
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      相关资源
      最近更新 更多