0

以下是调试日志,

 [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).

这是什么意思?帮助!

4

2 回答 2

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
于 2014-03-10T19:18:45.500 回答
1

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

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

将其替换为

spec.files         = `if [ -d '.git' ]; then git ls-files; fi`.split($/)
于 2014-06-08T14:22:32.780 回答