【问题标题】:Capistrano 3 error when deploy部署时出现 Capistrano 3 错误
【发布时间】:2014-03-06 02:20:09
【问题描述】:

下面是调试日志,

 [a4e2341c] Running /usr/bin/env [ ! -d ~/.rbenv/versions/2.1.0 ] on xxx.xxx.xxx
 [a4e2341c] Command: [ ! -d ~/.rbenv/versions/2.1.0 ]
 [a4e2341c] Finished in 6.761 seconds with exit status 1 (failed).

这个失败意味着什么?目录不存在?但它确实存在。

还有一个,

Running ~/.rbenv/bin/rbenv exec bundle exec rake tmp:cache:clear on www.neonan.com
Command: cd /home/ben/staging/releases/20140305160352 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.1.0 ~/.rbenv/bin/rbenv exec bundle exec rake tmp:cache:clear )

fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

这是什么意思?帮忙!

【问题讨论】:

    标签: ruby-on-rails-3 deployment capistrano3


    【解决方案1】:

    我遇到了类似的问题。看起来您正在使用的 gem 之一需要运行 git 命令。在 capistrano 版本 3 中,“.git”文件夹不再保留在发布文件夹中。相反,它使用一个名为“repo”的文件夹。

    您可能应该将 gem 修复为长期解决方案,这样就不需要它了。

    我基本上通过添加一个任务来解决这个问题,该任务将“repo”文件夹复制为发布文件夹下的“.git”文件夹。

      namespace :deploy do
    
      desc 'Copies .git folder'
      task :copy_git do
        on roles(:app) do
            puts release_path
            within release_path do
                  execute :cp, '-r', repo_path, '.git'
            end
        end
      end
    
      before 'bundler:install', 'deploy:copy_git'
    end
    

    【讨论】:

    • 你是绝对正确的。知道如何识别宝石吗?
    • 并非如此。您可以通过删除一半的宝石来尝试二进制搜索以找到罪魁祸首。
    【解决方案2】:

    @akshah123 感谢您提供的信息。我通过 Capistrano 3 将这个问题部署到我的解决方案尚未准备好作为打包 gem 交付的测试区域。 .gemspec 文件有以下成语

    spec.files         = `git ls-files`.split($/)
    

    替换为

    spec.files         = `if [ -d '.git' ]; then git ls-files; fi`.split($/)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      相关资源
      最近更新 更多