2013-03-13 23 views
17

Questa è la prima volta che sto distribuendo e ricevendo errori.Capistrano Distribuzione errore fallito per rotaie - bundle: non trovato

Ecco il mio file di deploy.rb richiedono 'bundler/Capistrano' set: applicazione, "app"

set :scm, :git 
set :repository, "[email protected]:myname/#{application}.git" 
set :branch, "master" 

server "198.12.78.92", :web, :app, :db, primary: true 
set :user, "myname" 
set :deploy_to, "/home/#{user}/public_html/#{application}" 
set :deploy_via, :remote_cache 
set :use_sudo, false 

default_run_options[:pty] = true 
ssh_options[:forward_agent] = true 

namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" 
    end 
end 

Qui è l'errore che sto ottenendo.

*** [deploy:update_code] rolling back 
    * executing "rm -rf /home/myname/public_html/app/releases/20130313073408; true" 
    servers: ["198.12.78.92"] 
    [198.12.78.92] executing command 
    command finished in 891ms 
failed: "sh -c 'cp -RPp /home/myname/public_html/app/shared/cached-copy /home/myname/public_html/app/releases/20130313073408 && (echo dd92017bc8bb7f951df52d6a14c933e3033fd24b > /home/myname/public_html/app/releases/20130313073408/REVISION)'" on 198.12.78.92 

EDIT - ho commentato "set: deploy_via,: remote_cache" e ora ottenere bundle: non trovato errore anche se

+0

Ho un problema simile, dove ricevo "bundle not found". Sono abbastanza sicuro che abbia a che fare con il fatto che io uso RVM, ed è configurato in .bashrc, che non viene usato quando si usa la shell "sh". Pertanto il ruby ​​e il bundle non sono stati trovati, anche se pensavate di trovarlo in una shell interattiva (come bash). Lavorando su una correzione ma non sono unix guru quindi non ho ancora una risposta. Comunque usa "cap deploy: check" e "cap shell" seguito da "on bundle" per ottenere alcuni messaggi di errore informativi. –

risposta

19

OK Sembra che la risposta è (vedi il mio commento alla tua domanda):

Avere un rvm recente installato sia sulla workstation che sul server (ho 1.17.1).

aggiuntivo:

gem 'rvm-capistrano' 

al Gemfile (all'interno del gruppo: lo sviluppo come la gemma Capistrano)

aggiuntivo:

require "rvm/capistrano" 
require "bundler/capistrano" 

al tuo config/deploy.rb

Questo dovrebbe farlo

11

Se si utilizza rbenv mettere questo in .bashrc

export PATH="$HOME/.rbenv/bin:$PATH" 
eval "$(rbenv init -)" 

prima della seguente riga capistrano caricare l'ambiente, anche se il collegamento con shell non interattiva

# If not running interactively, don't do anything 
[ -z "$PS1" ] && return 

probabilmente sarà anche funzionare anche con inizializzazione rvm

+0

hai completamente ragione; cosa shell non interattiva! – kubbing

+0

+1 ha funzionato, grazie – equivalent8

10

Ho avuto gli stessi problemi. Di seguito è la soluzione per RBenv e RVM.

RBENV

installato correttamente RBenv. Installa gemler bundler. Pefrorm 'rbenv rehash'.

Aggiunga al deploy.rb o distribuire/.RB

set :default_environment, { 'PATH' => '$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH' } 

RVM

installato correttamente RVM. Installa gemler bundler.

gem 'rvm-capistrano' 

deloy.rb o distribuire/.RB

require 'rvm/capistrano' 
set :rvm_ruby_string, 'ruby-2.0.0-p247' # Change to your ruby version 
set :rvm_type, :system # :user if RVM installed in $HOME 

Per ulteriori informazioni di configurazione leggere: https://github.com/wayneeseguin/rvm-capistrano

Buona fortuna.

+0

Bene, il suo lavoro per me nel caso RBENV –

Problemi correlati