cap deploy: cold завершается с ошибкой «Нет такого файла или каталога - мастер git rev-parse» - PullRequest
0 голосов
/ 19 августа 2010

Я впервые пытаюсь развернуть приложение rails.

Сервер работает на сервере Ubuntu 10.4 (64-битный)
Локальный компьютер работает под управлением Windows XP.
Репозиторий на github

Я успешно запустил

cap deploy:setup

но когда я бегу

cap deploy:cold

Я получаю следующую ошибку:

D:\Rails\rails_apps\fx>cap deploy:cold
You are running Ruby 1.8.6, which has a bug in its threading implementation.
You are liable to encounter deadlocks running Capistrano, unless you install
the fastthread library, which is available as a gem:  
   gem install fastthread  
  * executing `deploy:cold'  
  * executing `deploy:update'  
 ** transaction: start  
  * executing `deploy:update_code'  
    updating the cached checkout on all servers  
*** [deploy:update_code] rolling back  
  * executing "rm -rf /var/www/fx/releases/20100818215651; true"  
    servers: ["pragmaticriskmanagement.gotdns.com"]  
    [pragmaticriskmanagement.gotdns.com] executing command  
    command finished  
D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy.rb:37:in ``': No such file or directory - git rev-parse master (Errno::ENOENT)
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy.rb:37:in `load'  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy.rb:87:in `with_env'  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy.rb:37:in `load'  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistran/recipes/deploy/scm/git.rb:154:in `query_revision'  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy/scm/base.rb:35:in `send'  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy/scm/base.rb:35:in `method_missing'  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy/scm/base.rb:63:in `local'  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy/scm/base.rb:35:in `method_missing'  
         ... 39 levels...  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/cli/execute.rb:14:in `execute'  
        from D:/Rails/ruby/lib/ruby/gems/1.8/gems/capistrano-2.1.0/bin/cap:4 
        from D:/Rails/ruby/bin/cap:19:in `load'  
        from D:/Rails/ruby/bin/cap:19  

Вот мой файл 'deploy.rb'

set :application, "fx"  #"pragmaticriskmanagement.gotdns.com"
set :repository,  "git@github.com:jmedding/Fx.git"
set :deploy_to, "/var/www/#{application}"

set :git_enable_submodules, 1         # Make sure git submodules are populated

set :location, "pragmaticriskmanagement.gotdns.com"

set :user, "xxxxx"
set :use_sudo, false

set :scm, :git

role :app, location #"your app-server here"
role :web, location #"your web-server here"
role :db,  location,    :primary => true #"your db-server here", :primary => true

namespace :deploy do
    desc "Restart Application"
    task :restart, :roles => :app do
      run "touch #{current_path}/tmp/restart.txt"
    end

    desc "Make symlink for database.yml" 
    task :symlink_dbyaml do
      run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" 
    end

    desc "Create empty database.yml in shared path" 
    task :create_dbyaml do
      run "mkdir -p #{shared_path}/config" 
      put '', "#{shared_path}/config/database.yml" 
    end
end

  after 'deploy:setup', 'deploy:create_dbyaml'
  after 'deploy:update_code', 'deploy:symlink_dbyaml'

  after "deploy", "deploy:cleanup"

и теперь я застрял ...

Любая помощь будет принята с благодарностью.

Спасибо
Jon

Ответы [ 2 ]

1 голос
/ 24 января 2012

Извините, что воскресил такой старый поток, но я решил эту проблему, добавив местоположение по умолчанию моих двоичных файлов git (C: \ Program Files (x86) \ Git \ bin) в переменную PATH.

0 голосов
/ 28 августа 2010

Хорошо, я добился определенного прогресса.

Кажется, что ошибка указывает на то, что команда git ls-remote не найдена в локальной системе (win xp). В качестве теста я открыл оболочку GIT Bash и попробовал команду - все заработало. Далее я попробовал

cap deploy 

из оболочки GIT Bash. Команда не найдена. Хорошо, я добавил свой путь рельсов

D: \ Rails \ рубин \ Bin

в переменную «путь» окна. Теперь попробуйте

cap deploy

из оболочки bash. Похоже, что это решило эту проблему, которая теперь приводит к моей следующей проблеме

** [xxxxxxxx.com :: out] Cloning into /var/www/fx/shared/cached-copy...
** [xxxxxxxx.com :: err] Permission denied (publickey).
** [xxxxxxxx.com :: err] fatal: The remote end hung up unexpectedly

Я могу успешно запустить cap deploy из моего linux-бокса с тем же открытым ключом. Кроме того, я могу нажать эту кнопку на моем репозитории Github с этого ноутбука. Конечно, рассматриваемый ключ должен быть на сервере, но если он работает, когда я запускаю «cap» из коробки linux, почему он не запускается здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...